1 回答
TA贡献1850条经验 获得超11个赞
您可以在 a 中列出多种类型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 found
Error1 or Error 2 found
other 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上尝试一下。
如果您想将CommonErrors 限制为“true”错误,还可以嵌入该error接口:
type CommonError interface {
error
CommonError()
}
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报