从18年转向Go语言之后,一直关注其发展。在众多缺失的特性当中,泛型无疑是呼声最高的那个。经过几年的努力,泛型特性终于要跟随 1.18 版本发布。这是一个里程碑。考虑到Go泛型的原始设计文档比较艰涩,而且结构比较杂乱,今天就把自己的理解整理成文,分享给大家。因为内容很多,我自己对英文设计文档的理解也有限(尤其是类型推导部分),错误再所难免。欢迎各位读者通过留言批评指正。本文是Go泛型系列的第一篇,后续还会发表更多相关内容,也欢迎关注。
文章结构如下:
- 类型参数(Type parameters)
- 泛型约束(Constraints)
- `any`约束
- 函数约束(Functions Constraints)
- 运算符约束(Operators Constraints)
- 复合约束
- 并集约束
- 交集约束
- 泛型约束
- 相互约束
- 内置约束
- `comparable`
- `constraints`
- 泛型推导(Type inference)
- 类型同化(Type unification)
- 参数推导(Function argument type inference)
- 约束推导(Constraint type inference)
- 元素类型约束示例
- 指针方法约束示例
- 推导后约束校验
- 总结
欢迎到我的博客阅读