04. Go 语言中的 Interface
1. interface
interface 类型的定义有两个,一个是空 interface 的定义:eface (src/runtime/runtime2.go#eface),一个是带方法的 interface 的定义:iface (src/runtime/runtime2.go#iface)。
type iface struct {
tab *itab
data unsafe.Pointer
}
type eface struct {
_type *_type
data unsafe.Pointer
}
空 interface 的值由两部分组成:类型(type) 和值(data)。一个 interface 等于 nil,必须类型和值同时为 nil。