【golang】实现error接口的结构体,fmt打印信息不完整 - Go语言中文社区

【golang】实现error接口的结构体,fmt打印信息不完整


fmt有默认的打印规则:https://golang.org/pkg/fmt/ 

1.实现了error接口

当一个结构体实现了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}

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zmw2004110/article/details/89674736
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 19:41:34
  • 阅读 ( 813 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢