【golang】实现error接口的结构体,fmt打印信息不完整
fmt有默认的打印规则:https://golang.org/pkg/fmt/
<h3>1.实现了error接口</h3>当一个结构体实现了error接口时,会将该结构体转化为一个error,并调用error的Error()方法。
example:
自己封装一个错误信息struct,包含一个Error()的方法,该方法同样包含在error接口中:
<blockquote>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的内容:
<blockquote>{{0 0 } [] false} permission denied
</blockquote>将ErrMsg接口中的Error()改名后,并更改实现后,即可解决:
<blockquote>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
}
打印结果为:
<blockquote>{{0 0 } [] false} &{permission denied 2}
</blockquote> 到此这篇关于“【golang】实现error接口的结构体,fmt打印信息不完整”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!您可能感兴趣的文章:
【golang】实现error接口的结构体,fmt打印信息不完整
golang 面试题(十三)interface内部结构和nil详解
第07章 Go语言接口(interface),Golang接口(interface)
go struct 成员变量后面再加个字符串是什么意思?_Go语言的学习笔记(第十章) 接口...
GO语言-文件版日志系统
golang异常机制
『GoLang』错误处理
Go编程基础-学习2
Go结构体嵌入接口类型
Golang实践-error