<h4>刚开始学go语言,在最近学习go指南里遇到一个问题,貌似一个结构体,或者说被type语法定义的新类型,目前是结构体和基本类型的新名字,在实现error和Stringers接口之后,使用Println方法时调用会有优先级,想问问大佬们为什么会这样。
<p>下面是代码</p>
<pre><code>
package main
import (
"fmt"
)
type MyError struct {
What string
}
func (e MyError) Error() string {
return "Error()"
}
func (e MyError) String() string{
return "String()"
}
func main() {
myerr:=MyError{"nothing"}
fmt.Println(myerr)
}
</code></pre>
此时跑出来的结果是
![屏幕快照 2017-12-18 下午10.19.41.png](https://static.studygolang.com/171218/4d229ef8cbe907bae24996758b52a1db.png)
如果我把上述代码中的Error()注释掉,结果则如下
![屏幕快照 2017-12-18 下午10.20.11.png](https://static.studygolang.com/171218/f62757d164337baf1d9ac73253de0cc2.png)
是不是一个结构体实现了error接口就默认它是一个error了,所以优先调用了,请指教
有疑问加站长微信联系(非本文作者)