自定义的代码和errors包中的代码一模一样,为啥errors.New 返回的值是string 而New2返回的值是&{} 。。。
更多评论
这里的关键是 fmt.Print 系列方法,对 error 接口做了特殊处理。也就是说,如果实现了 error 接口,会调用它的 Error 方法,自然就能打印字符串了,而你这里是自定义接口,当然不会打印字符串。
具体可以看:http://docs.studygolang.com/src/fmt/print.go?s=308:308#L601