前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go 接口

go 接口

作者头像
平凡的学生族
发布2019-12-20 10:52:52
2930
发布2019-12-20 10:52:52
举报
文章被收录于专栏:后端技术后端技术

精髓

《go语言实战》5.4.3方法集。要理解方法集的含义!方法集与接口密切相关。

代码清单 5-42 展示了规范里对方法集的描述。描述中说到,T 类型的值的方法集只包含值 接收者声明的方法。而指向 T 类型的指针的方法集既包含值接收者声明的方法,也包含指针接收 者声明的方法。从值的角度看这些规则,会显得很复杂。让我们从接收者的角度来看一下这些规 则,如代码清单 5-43 所示。

代码清单 5-43 展示了同样的规则,只不过换成了接收者的视角。这个规则说,如果使用指 针接收者来实现一个接口,那么只有指向那个类型的指针才能够实现对应的接口。如果使用值 接收者来实现一个接口,那么那个类型的值和指针都能够实现对应的接口。

存储实现

接口值是一个两个字长度 的数据结构,第一个字包含一个指向内部表的指针。这个内部表叫作 iTable,包含了所存储的 值的类型信息。iTable 包含了已存储的值的类型信息以及与这个值相关联的一组方法。第二个 字是一个指向所存储值的指针。将类型信息和指针组合在一起,就将这两个值组成了一种特殊 的关系。

图 5-2 展示了一个指针赋值给接口之后发生的变化。在这种情况里,类型信息会存储一个指 向保存的类型的指针,而接口值第二个字依旧保存指向实体值的指针。

另外

没理解下面这句话:

因为不是总能获取一个值的地址,所以值的方法集只包括了使用值接收者实现的方法。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 精髓
  • 存储实现
  • 另外
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档