第19章 接口类型
8 分钟阅读
第19章 接口类型
接口(Interface),Go语言的"魔法契约"!如果说类型是"房产证",那接口就是"职业资格证"——你不需要关心这个人姓甚名谁,只需要知道他能做什么。
19.1 接口的定义
19.1.1 接口声明语法
| |
19.1.2 接口命名惯例
| 惯例 | 示例 | 含义 |
|---|---|---|
-er结尾 | Reader, Writer | 表示"能做什么" |
19.2 空接口
19.2.1 interface{} 是什么
| |
19.2.2 any 是 interface{} 的别名
| |
19.2.3 泛型容器
| |
19.3 接口组合
19.3.1 接口嵌入
| |
19.3.2 组合接口的方法集
| |
19.4 接口设计原则
19.4.1 接口隔离原则
| |
19.4.2 小接口优于大接口
| |
19.4.3 接口定义位置
| |
19.5 标准库常用接口
19.5.1 io 包接口
io.Reader
| |
io.Writer
| |
io.Closer
| |
io.Seeker
| |
19.5.2 fmt 包接口
fmt.Stringer
| |
fmt.GoStringer
| |
19.5.3 sort 包接口
| |
19.6 接口实现机制
19.6.1 接口的内部结构
| |
19.6.2 接口缓存
| |
19.7 空接口详解
19.7.1 反射与空接口
| |
19.7.2 any 类型演进
| |
本章小结
本章我们学习了Go接口:
接口基础:
- 接口定义了一组方法签名
- Go使用隐式实现
空接口(any):
- 任何类型都满足空接口
- Go 1.18+推荐使用any
接口组合:
- 通过嵌入来组合新接口
设计原则:
- 小接口优于大接口
- 由使用方定义接口
标准库重要接口:
io.Reader/Writer/Closerfmt.Stringersort.Interface