大家好,我是煎鱼。
今天这篇文章是想收集大家在泛型内的使用场景是什么,一起捣鼓捣鼓。所以标题其实是提问了。
Go1.18 在今年的 3 月 15 号已经正式发布,这意味着 Go 正式进入了泛型时代。
(被黑的点少了一个?)
距离发布 1.18 现在已经过去了近 3 个月,新特性中最瞩目的泛型,又应用的怎么样呢?
根据 reddit 上各 gopher 的反馈,现阶段至少有以下几种使用场景:
切片、映射、集合等工具库。
代码生成器的库。
缓存层的库。
算法、数据结构相关的库。
并发管理器。
这些场景,包含了你正在做的 Go 泛型方向吗?
从国外论坛反馈的结果来看,对泛型的推广比较伤的是 gopls/golangci-lint 工具的兼容性问题,有不少的 lint 还没有适配新版本的泛型语法,也就是对泛型的支持非常有限。
如下《Support of go1.18[1]》的 issues:
国外对于 golangci-lint 依赖度明显高很多,成熟的项目基本都是必跑的。从而会导致出现公司允许不使用,因为 golangci-lint 还不支持。
另外有比较保守或是没应用场景的同学,在等待后续 Go1.19+ 的标准库和更多通用库上对泛型的支持,再进一步使用。
各位在日常和公司中有没有开始用泛型呢,做了些什么,场景是什么?
欢迎在评论区告诉大家,一起学习交流。
参考资料
[1]
Support of go1.18: https://github.com/golangci/golangci-lint/issues/2649
关注和加煎鱼微信,
获取业内消息和知识,拉你进交流群👇
你好,我是煎鱼,出版过 Go 畅销书《Go 语言编程之旅》,再到获得 GOP(Go 领域最有观点专家)荣誉,点击蓝字查看我的出书之路。
日常分享高质量文章,输出 Go 面试、工作经验、架构设计,加微信拉读者交流群,和大家交流!