社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
fmt有默认的打印规则:https://golang.org/pkg/fmt/
当一个结构体实现了error接口时,会将该结构体转化为一个error,并调用error的Error()方法。
example:
自己封装一个错误信息struct,包含一个Error()的方法,该方法同样包含在error接口中:
type ErrMsg interface {
Error() string
Code() int
}
type ErrMsgString struct {
e string
c int
}
func New(errStr string, code int) ErrMsg {
return &ErrMsgString{errStr, code}
}
func (e ErrMsgString) Error() string {
return e.e
}
func (e ErrMsgString) Code() int {
return e.c
}
打印时,只打印出了e的内容:
{{0 0 } [] false} permission denied
将ErrMsg接口中的Error()改名后,并更改实现后,即可解决:
type ErrMsg interface {
ErrorInfo() string
Code() int
}
type ErrMsgString struct {
e string
c int
}
func New(errStr string, code int) ErrMsg {
return &ErrMsgString{errStr, code}
}
func (e ErrMsgString) ErrorInfo() string {
return e.e
}
func (e ErrMsgString) Code() int {
return e.c
}
打印结果为:
{{0 0 } [] false} &{permission denied 2}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!