Go笔记-Chap7 接口
2019-05-09 本文已影响0人
leon4ever
7.1 定义
- 接口代表一种调用契约,是多个方法声明的集合。
- 相当于一种协议,遵守事先约定的规则,无需知道对方具体的身份进行协作。
- 解除了类型依赖,减少用户可视方法,屏蔽细节
- 先实现类型,再抽象出接口,非侵入式设计
内部实现上看,也是一种数据结构
- 不能有字段
- 不能定义自己的方法
- 只能声明方法,不能实现
- 可嵌入其他接口类型
通常以er作为名称后缀,但参数名可不同或省略。
如果一个接口没有任何方法声明,就是一个空接口,类似根类型,可被赋值为任何类型的对象
默认值是nil
- 可以嵌入其他接口,目标类型方法集中必须拥有包含嵌入接口方法在内的全部方法才算实现了该接口。
- 超集可以隐式转换为子集,反过来不行,就是可以由大到小
- 支持匿名接口类型
7.2 执行机制
接口使用一个名为itab的结构存储运行期所需的相关类型信息
7.3 类型转换
类型推断可将接口变量还原为原始类型,或用来判断是否实现了某个具体接口类型。