any inerface{}
type any ¶added in go1.18
type any = interface{}
any is an alias for interface{} and is equivalent to interface{} in all ways
any是空接口的别名,在go1.18后引入
接口是两件事物:它是一组方法,也是一种类型。
interface{} 类型是没有方法的接口。由于没有 implements 关键字,所有类型都至少实现零个方法,并且自动满足接口,所有类型都满足空接口,所以空接口能够被用来存储任意类型的值
inerface{}底层实现
type emptyInterface struct {
typ *rtype // 类型描述
Word unsafe.Pointer // 值
}
可以看到其包含一个类型描述和一个值
type rtype struct {
size uintptr
ptrdata uintptr
hash uint32
tflag tflag
align uint8
fieldAlign uint8
kind uint8
alg *typeAlg
gcdata *byte
str nameOff
ptrToThis typeOff
}
空接口嵌入的类型,我们可以映射导出字段或列出方法
评论已关闭