go 接口

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

    精髓

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


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

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

    存储实现

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


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


    另外

    没理解下面这句话:

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

    相关文章

      网友评论

          本文标题:go 接口

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