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