采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
type userError interface { Error() string Message() string }
这个问题非常好。关键在于看的角度不一样。
type userError interface {Error() stringMessage() 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.
非常感谢!
难道就是为了Error方法里面的错误给系统打印出来,message方法里面的给用户展示这样子的区分吗?
傻瓜,这里实现error是因为handler 出参数是error,这样一来相当于userError也是error类型啦。
type userError interface { error //Message() string}
我发现只要重写Error方法,不要Message也是可以的呀?那这里,老师为啥非要再多定义一个message方法
登录后可查看更多问答,登录/注册
语法+分布式爬虫实战 为转型工程师量身打造
3.7k 14
690 1
2.0k 1
1.1k 12