golang中的接口的底层表示

本文探讨了Go语言中接口的底层表示,重点介绍了iface结构体和itab结构体的作用。iface的data字段指向实际结构体,而itab则记录了接口类型和具体值的类型信息以及实现的方法集。通过对这些内部机制的理解,可以更好地掌握Go语言的接口使用和动态类型转换。

        首先我们先来看下下面的代码,b应该是K类型而不是B类型,所以才不会出现b.aa和b.bb。

         接下来让我看看接口在底层是怎样的表示呢?在ruuntime2.go中有个iface结构体,这个结构体就是接口的底层表示。

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

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值