1 回答
TA贡献1818条经验 获得超3个赞
您可以使用类型别名:
type SDKErr = errs.Error
// Error to inherit from errs.Error
type MyError struct {
SDKErr
ErrDetail string //more message to my error
st []uintptr
}
func (e *MyError) Error() string {
// ...
}
现在嵌入字段的名字是SDKErr,但是不会和方法名冲突,errs.Error不需要转换就可以用在任何需要的地方。
游乐场:https ://go.dev/play/p/XSWi5hzHGPh
当然你也可以使用命名字段,而不是别名:
type MyError struct {
SDKErr errs.Error
ErrDetail string //more message to my error
st []uintptr
}
然后调用errs.Errorsimply like的方法e.SDKErr.GetCode()。但是MyError,例如,如果要序列化为 JSON,则字段errs.Error将显示为嵌套对象,而使用类型别名时,它们将被“扁平化”。
基本上如果errs.Error被定义为:
type Error struct {
Code int
}
使用类型别名和嵌入字段,JSON 看起来像:
{"Code":0,"ErrDetail":""}
与命名字段:
{"SDKErr":{"Code":0},"ErrDetail":""}
- 1 回答
- 0 关注
- 176 浏览
添加回答
举报
