教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 【golang】实现error接口的结构体,fmt打印信息不完整

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

发布时间:2022-01-23   编辑:jiaochengji.com
教程集为您提供【golang】实现error接口的结构体,fmt打印信息不完整等资源,欢迎您收藏本站,我们将为您提供最新的【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
}

</blockquote>

打印时,只打印出了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>

打印结果为:

<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

[关闭]
~ ~