生产环境遇到一个 Go 问题,整组人都懵逼了...

煎鱼eddycjy ·
更多评论
我保持怀疑。 例1应释为: a := GetErr() // 这里 a==nil 为 true,因为返回的确实是nil。 var e error e = a // 这里是interface赋值操作,e 说:实现了我接口的都可以给我;a说:我是*MyErr,我实现了,然后把他nil的实例赋给e。我觉得重点在这里,就是interface的赋值,并不是单单的data赋值。 fmt.Println(e == nil) // e当然不为nil啊,因为他就是 *MyErr nil 就是 nil,只不过interface的nil是type和data都为nil才成立,
#1