golang 中有两种接口,即eface和iface。而 eface 是一个空接口,可以简单地表示为interface {}. iface 是一种至少具有一种方法的接口,例如:
type MyInterface interface {
Greeting() string
}
在 golang 实现中,eface 和 iface 都是两个字长的结构体。eface 保存数据和数据类型,iface 保存数据、接口类型和数据类型。当 iface 分配给 eface 时,将忽略 interfacetype 信息。只有传递给 eface 的数据和数据类型。
因此,reflect.TypeOf(i interface{})的参数是和 eface,没有接口类型信息(在您的情况下也称为 context.Context)。所以你不能得到原始的接口类型。
慕森王
相关分类