关于类型断言的一些疑问
来源:8-5 服务器统一出错处理2

五栋一哥
2020-03-02
老师,您好!对于类型断言我有些疑问
1.类型断言err.(userErr),会调用Error()方法吗?为什么?
2.err.(userErr)返回值的value是什么?
3.网上有人说:“在fmt.Println的实现里面会做类型断言,看是否实现error接口和string接口,且error优先级会高于string”,请问这句话是否为正确的呢?
谢谢老师!
写回答
1回答
-
ccmouse
2020-03-02
不会,类型断言只是看一下它是不是你要的类型,不会调用Error()
err.(userErr),如果这个err是userErr,那么它返回它本身,不过类型变成了是userErr。不是的话会panic
是的,我们可以简单的实现Error()和String()两个函数试一下。具体代码在 https://github.com/golang/go/blob/master/src/fmt/print.go#L615
20
相似问题