[Go疑难杂症]为什么nil不等于nil( 四 )

kindInterface
总结

  1. 接口类型变量跟普通变量是有差异的 , 非空接口类型变量对应的底层结构是 iface  , 空接口类型类型变量对应的底层结构是 eface
  2. iface 中有两个跟类型相关的字段 , 一个表示的是接口的类型 inter , 一个表示的是变量实际类型 _type
  3. 只有当接口变量的 itab._type 与 data 都为 nil 时 , 也就是实际类型和值都未被赋值前 , 才真正等于 nil
到此 , 一个有趣的探索之旅就结束了 , 但长路漫漫 , 前方还有无数的问题等待我们去探索和发现 , 这便是学习的乐趣 , 希望能与君共勉 。

经验总结扩展阅读