Go nil接口变量为什么不等于nill?

2 min read

因为 nil 是一个预定义的常量,而 nil 接口是一个接口类型的变量,它实际上包含了两个属性:一个是类型,一个是指向底层数据的指针。在某个变量被初始化为 nil 接口时,它的类型被设置为 interface{},但是它的指针部分并没有被设置为 nil,所以它和 nil 不相等。