源码中的 nil 是这样定义的所以 nil 可以理解为这些类型的零值,声明一个变量在没有赋值的情况下,变量处于零值状态。场景一真相是 i 刚开始没有类型,而 p 是有类型,所以 p 和 i 都等于 nil,但是 == 可以理解为 php 或者 js 里面的 === 全等,既要类型相等,也要值相等。在 i = p 之后,p 和 i 类型和值保持了一致所以会相等,但是 i 已经不等于 nil 了,因为 nil 是 interface 的 0 值,或者说 i 已经指向 p ,i 现在是个有类型状态而非 0 值状态。

golang 中的 nil的场景分析

golang 中的 nil的场景分析

golang 中的 nil的场景分析