SegmentFault思否 · 2021年10月18日

Go 创始人 Rob Pike 反对在 Go 1.18 标准库中引入泛型支持

image.png
近日,Go 语言创始人之一 Rob Pike 在 Github 上发表评论引发关注。据悉,他已在 Go 代码仓库提交了一个 issue (#48918),反对在 Go 1.18 的标准库中引入泛型支持,建议不要改动 Go 1.18 中的标准库。
image.png
Rob 提出以上建议主要有两个依据:

其一,是因为改动范围过大,可能会出现差错。Rob 表示,Go 语言 1.18 版本很可能包括自创建以来对语言的最大变化——参数多态性,俗称泛型。

尽管语言的变化已经以某种形式进行了十多年,但是库的变化是非常新的,且暂时没有设计使用新类型的经验和依据。当然,多年来 Go 语言团队已经对此做了很多工作。

关于核心库将如何适应等议题,目前也已经有很多讨论(例如请参见#45955和#48594,还有其他的,而且肯定会很快出现。)

其二,是缺乏实战经验。Rob 指出,如何在标准库中使用这些泛型是需要深思熟虑计划的。如果现在将它们放入库中,会给发布增加了很大的负担。

可以在生产中进行测试,在一两个周期内进行更改、调整和发展,让整个社区试用,只有通过测试,才会将它们转移到主回购协议中进入主仓库。也就是说,有了一、两个版本的实际使用,且积累了足够的经验之后,再考虑更新标准库也不迟。

另外,由于泛型的兼容性承诺使得任何细节出错的成本相当高,Rob 团队先等待、观察和学习。
image.png
因此,Rob 建议暂时不要在 Go 1.18 修改标准库。可以继续为切片、贴图、通道等设计、构建、测试和使用新的库,先在 golang.org/x 或 golang.org/exp 提供相关库的泛型版本。
image.png
最后,Rob 忠告称:“我意识到每个人都想从新的语言功能中获得乐趣,并期待着解决核心库中的一些问题,这些问题一旦出现就会变得不那么笨拙,但我坚信,现在最好放慢速度。谨慎使用、学习、学习和行动。”

推荐阅读
关注数
4132
内容数
705
SegmentFault 思否旗下人工智能领域产业媒体,专注技术与产业,一起探索人工智能。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息