栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我们可以为Go中的错误创建子类型吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我们可以为Go中的错误创建子类型吗?

您可以在中列出多个类型

case
,这样便可以完成您想做的事情:

switch t := param.(type) {case Error1, Error2:    fmt.Println("Error1 or Error 2 found")default:    fmt.Println(t, " belongs to an unidentified type")}

测试它:

printType(Error1{})printType(Error2{})printType(errors.New("other"))

输出(在Go Playground上尝试):

Error1 or Error 2 foundError1 or Error 2 foundother  belongs to an unidentified type

如果要对错误进行“分组”,另一种解决方案是创建“标记”接口:

type CommonError interface {    CommonError()}

Error1
Error2
必须实现:

func (Error1) CommonError() {}func (Error2) CommonError() {}

然后您可以执行以下操作:

switch t := param.(type) {case CommonError:    fmt.Println("Error1 or Error 2 found")default:    fmt.Println(t, " belongs to an unidentified type")}

用相同的方法测试,输出是相同的。在Go Playground上尝试一下。

如果您想将

CommonError
s 限制为“ true”错误,请同时嵌入
error
接口:

type CommonError interface {    error    CommonError()}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号