为什么这里定义接口一定要实现error的方法呢?,不理解
来源:8-5 服务器统一出错处理2

尼克2018
2021-01-08
type userError interface {
Error() string
Message() string
}
3回答
-
这个问题非常好。关键在于看的角度不一样。
type userError interface {
Error() string
Message() string
}这是一个接口,定义接口的时候我们先不考虑如何实现。Message()是给客户看的,最终返回在网页上的一个消息。Error()则没有特别的考虑,只是为了让它符合error接口,让userError是一个error。这个Error()可以返回跟Message()一样的内容,也可以返回不一样的。我们在这个接口处对此没有任何假设。对于Error()函数到底该返回什么样的string,error接口也同样没有规定。
总结来说Message是我们规定的,给用户看的消息。Error没有任何规定,为了符合error接口。
后面我的例子中,选择了Error()和Message()返回相同结果的做法。也可以不同,举个例子:
Error返回:code=0x1234, reason=permission denied
Message返回:sorry your access to the file is denied. you may go to xxx to ask for permission.
212021-01-12 -
尼克2018
提问者
2021-01-08
难道就是为了Error方法里面的错误给系统打印出来,message方法里面的给用户展示这样子的区分吗?
012022-02-08 -
尼克2018
提问者
2021-01-08
type userError interface {
error
//Message() string
}我发现只要重写Error方法,不要Message也是可以的呀?
那这里,老师为啥非要再多定义一个message方法00
相似问题