go 接口

作者: 不存在的里皮 | 来源:发表于2019-12-18 12:40 被阅读0次

精髓

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


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

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

存储实现

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


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


另外

没理解下面这句话:

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

相关文章

  • 第04天(面对对象编程)_04

    16_接口的继承.go 17_接口转换.go 18_空接口.go 19_类型断言:if.go 20_类型断言:sw...

  • go语言基础

    go语言基础 go 语言接口

  • 第05天(异常、文本文件处理)_01

    01_error接口的使用.go 02_error接口应用.go 03_显式调用panic函数.go 04_数组越...

  • Golang 学习笔记七 接口

    一、概念 《快学 Go 语言》第 9 课 —— 接口 1.接口定义Go 语言的接口类型非常特别,它的作用和 Jav...

  • Golang学习笔记-接口和错误

    接口 Go接口定义了方法后,其它类型只要实现了这些方法就是实现了接口。Go语言中接口类型的独特之处在于它是满足隐式...

  • go 接口

    https://www.jianshu.com/p/dbd4e6b4900c

  • go 接口

    空接口 断言 我们知道interface{}可以保存任意类型的数,所以我们要通过断言查询是什么类型断言的对象是空接口

  • Go 接口

  • Go 接口

    直奔主题,看一下go中的接口是啥样子

  • go 接口

    精髓 《go语言实战》5.4.3方法集。要理解方法集的含义!方法集与接口密切相关。 代码清单 5-42 展示了规范...

网友评论

      本文标题:go 接口

      本文链接:https://www.haomeiwen.com/subject/kepebqtx.html