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

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

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

Rob 提出以上建议主要有两个依据

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

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

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

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

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

另外,由于泛型的兼容性承诺使得任何细节出错的成本相当高,Rob 团队先等待、观察和学习。

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

因此,Rob 建议暂时不要在 Go 1.18 修改标准库。可以继续为切片、贴图、通道等设计、构建、测试和使用新的库,先在 golang.org/x 或 golang.org/exp 提供相关库的泛型版本。

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

最后,Rob 忠告称:“我意识到每个人都想从新的语言功能中获得乐趣,并期待着解决核心库中的一些问题,这些问题一旦出现就会变得不那么笨拙,但我坚信,现在最好放慢速度。谨慎使用、学习、学习和行动。”

文章转载:SegmentFault

(版权归原作者所有,侵删)

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、容器云、Go、Python开发专业人才培训机构!