首先我们先来看下下面的代码,b应该是K类型而不是B类型,所以才不会出现b.aa和b.bb。
接下来让我看看接口在底层是怎样的表示呢?在ruuntime2.go中有个iface结构体,这个结构体就是接口的底层表示。

data指向的就是我们所用的那个结构体。接下来我们看看itab结构体。

其中inter是现在所用的接口类型,而type是指我们现在这个接口所装载的那个值。fun是这个我们现在所装载的这个值实现了哪些方法。

本文探讨了Go语言中接口的底层表示,重点介绍了iface结构体和itab结构体的作用。iface的data字段指向实际结构体,而itab则记录了接口类型和具体值的类型信息以及实现的方法集。通过对这些内部机制的理解,可以更好地掌握Go语言的接口使用和动态类型转换。
首先我们先来看下下面的代码,b应该是K类型而不是B类型,所以才不会出现b.aa和b.bb。
接下来让我看看接口在底层是怎样的表示呢?在ruuntime2.go中有个iface结构体,这个结构体就是接口的底层表示。

data指向的就是我们所用的那个结构体。接下来我们看看itab结构体。

其中inter是现在所用的接口类型,而type是指我们现在这个接口所装载的那个值。fun是这个我们现在所装载的这个值实现了哪些方法。

354

被折叠的 条评论
为什么被折叠?