http://play.golang.org/p/GSn5_I2Qqs
package main
import "log"
type MyError struct{}
func (err *MyError) Error() string {
return "MyError"
}
func Foo() (err *MyError) {
return
}
func main() {
var err error
if err = Foo(); err != nil {
log.Fatal(err) // BUG
}
}
原因请看这个文章: http://my.oschina.net/chai2010/blog/117923
临时建议:
如果是返回自己的Error类型, 绝对不要让这个类型符合error接口的定义.
这样可以避免接口的隐式转型.
有疑问加站长微信联系(非本文作者)