06.interface
# 01.interface
# 0、interface基本概念
- golang中的接口分为
带方法的接口和空接口
iface
:表示带方法的接口eface
:表示空接口
在 Go 中,
interface
可以理解为一组方法的集合- 当一个类型实现了某个
interface
的所有方法时 - 这个类型就实现了这个
interface
,并且可以被赋值给该interface
变量
- 当一个类型实现了某个
interface{}
是 Go 的空接口,表示任意类型
# 1、eface空接口
type
: 指向值的具体类型信息(type
descriptor)data
: 存储具体的值(value
)
type emptyInterface struct {
typ *type // 指向值类型的指针
data unsafe.Pointer // 存储值的指针
}
1
2
3
4
2
3
4
# 2、iface带方法的接口
- 对于非空接口(定义了方法的接口),它的内部表示更加复杂,包含三部分
itab
: 接口表,存储该接口的具体实现信息
(包含两个重要的部分)inter
: 指向接口类型信息
type
: 指向具体实现该接口的类型信息
data
: 存储具体的值
methods
: 接口的方法集合
type iface struct {
tab *itab // 指向接口表的指针
data unsafe.Pointer // 存储值的指针
}
1
2
3
4
2
3
4
上次更新: 2024/10/15 16:27:13