Go语言interface(接口)底层实现-1

Go的interface源码在Golang源码的runtime目录中。
Go在不同版本之间的interface结构可能会有所不同,但是,整体的结构是不会改变的,此文章用的Go版本是1.11。

Go的interface是由两种类型来实现的:iface和eface。
其中,iface表示的是包含方法的interface,例如:

 
  1. type Person interface {

  2.     Print()

  3. }

而eface代表的是不包含方法的interface,即

type Person interface {}


或者

var person interface{} = xxxx实体

eface

eface的具体结构是:

一共有两个属性构成,一个是类型信息_type,一个是数据信息。
其中,_type可以认为是Go语言中所有类型的公共描述,Go语言中几乎所有的数据结构都可以抽象成_type,是所有类型的表现,可以说是万能类型,
data是指向具体数据的指针。

type的具体代码为:

 
  1. type _type struct {

  2. size uintptr

  3. ptrdata uintptr // size of memory prefix holding all pointers

  4. hash uint32

  5. tflag tflag

  6. align uint8

  7. f

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值