interface

空接口 interface{}

没有定义任何方法的接口为空接口,空接口可以接收任意数据类型,就是说可以将任意类型的数据赋值给一个空接口,空接口的结构定义位于 src/runtime/runtime2.go, 定义如下:​

type eface struct {​
   _type *_type​
   data  unsafe.Pointer​
}​

非空接口

非空接口的底层实现按与空接口有所不同,因为其多了方法列表,在底层实现中显然我们需要有地方来存储方法列表,非空接口的结构定义位于 src/runtime/runtime2.go, 定义如下:​

type iface struct {​
   tab  *itab​
   data unsafe.Pointer​
}​