资讯专栏INFORMATION COLUMN

Go 1.18 将支持泛型,Go 团队技术 leader 有话说

2i18ns / 3548人阅读

摘要:表示,泛型是发布以来语言最重要的变化,同时也是有史以来最大的单一语言特性变化。此外,团队没有任何在生产环境使用泛型的经验,因此表示他们会在发布说明中明确指出,在生产环境中使用泛型应该适当地谨慎处理。

Russ Cox(Go 核心开发团队技术 leader,下简称"rsc")公开发布邮件,称如果没有意外情况,Go 1.18 将会支持泛型。

rsc 表示,泛型是 Go 1 发布以来 Go 语言最重要的变化,同时也是有史以来最大的单一语言特性变化。他写这封邮件主要是解释为 Go 加入泛型对 Go 开发团队以及其他开发者的意义。

rsc 认为,Go 的任何新特性——无论是库或者语法,都具有不确定性。同样的,泛型也无法避免这种不确定性。而且由于泛型是一个较大的新特性,因此它带来的不确定性也会相应地更大。虽然他们为 Go 语言带来了泛型,但他们自己并不了解使用泛型的最佳实践是什么,所以无法在文档给出关于何时使用泛型以及何时不使用的准确、明确答案。

此外,Go 团队没有任何在生产环境使用泛型的经验,因此 rsc 表示他们会在发布说明中明确指出,在生产环境中使用泛型应该适当地谨慎处理。

rsc 强调了 Go 1.18 与其他 Go 1.x 版本一样具有向后兼容的承诺:他们不会破坏使用 Go 1.18 构建的代码的兼容性,包括使用泛型的代码。最坏的情况下,如果发现 Go 1.18 语义存在致命的问题,并需要进行更改(例如在 Go 1.19 中提供更改),他们会使用 go.mod 文件的 go line 来确定该模块中的源文件符合 Go 1.18 还是 Go 1.19+ 语义(预计不需要使用这种方法)。

rsc 还提到,第三方工具可能不会在 Go 1.18 发布时就完全支持泛型。他们正在与许多工具的作者沟通,尽量确保他们尽快更新,但每项工具都有自己的时间安排表。

对于“为什么不把「泛型」作为可选项提供”的疑问,rsc 也进行了解释。他表示,在这方面,减少不确定性的唯一方法是默认提供泛型。rsc 用 vendoring 举例,他说道,当 Go 团队在 Go 1.5 将 vendoring 作为可选项提供时,发生的情况是几乎没有人真正使用它,直到 Go 1.6 默认启用。另一方面,Go 1.5 版本将 Go 生态分裂成“在标准 Go 下运行的代码”和“在启用 Vendoring 后 Go 运行的代码”。现在他们希望尽可能避免泛型也出现这种情况。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122876.html

相关文章

  • 再见,Python!你好,Go语言

    摘要:语言诞生于谷歌,由计算机领域的三位宗师级大牛和写成。作者华为云技术宅基地链接谷歌前员工认为,比起大家熟悉的,语言其实有很多优良特性,很多时候都可以代替,他已经在很多任务中使用语言替代了。 Go 语言诞生于谷歌,由计算机领域的三位宗师级大牛 Rob Pike、Ken Thompson 和 Robert Griesemer 写成。由于出身名门,Go 在诞生之初就吸引了大批开发者的关注。诞生...

    zhaot 评论0 收藏0
  • 天真贝叶斯学习机 | TiDB Hackathon 优秀项目分享

    摘要:我们非常希望本届诞生的优秀项目能够在社区中延续下去,感兴趣的小伙伴们可以加入进来哦本文作者是来自团队的杨文同学,他们的项目天真贝叶斯学习机在本届中获得了三等奖最佳创意奖。比赛前一日从广州南站出发,次日抵达北京西站。 Ti Hack 系列 TiDB Hackathon 2018 共评选出六组优秀项目,本系列文章将由这六组项目的成员主笔,分享他们的参赛经验和成果。我们非常希望本届 Hack...

    Anshiii 评论0 收藏0
  • 扒一扒Rancher社区中的小工具

    摘要:可是并没有统一的版本号管理功能,只是额外提供了内包的依赖路径。描述文件支持两种格式,普通方式和方式,可以直接在其中描述依赖库的远程地址版本号等,一个简单的例子我这里使用普通格式然后在根目录执行,即可获得相关版本的依赖包非常轻量级,非常简洁。 与Linux、OpenStack等成熟的技术社区相比,Rancher社区还是处于初级发展阶段,一个技术社区的成败并不是单纯的代码贡献,而学习文档的...

    wwolf 评论0 收藏0

发表评论

0条评论

2i18ns

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<