page contents

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

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

attachments-2021-11-qwtgnV976189cebb90429.jpg

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

attachments-2021-11-J6CoGZKp6189cea1ac48c.jpg

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 运行的代码”。现在他们希望尽可能避免泛型也出现这种情况。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。


如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-XM86cAyJ62b11f826495c.jpeg

  • 发表于 2021-11-09 09:28
  • 阅读 ( 391 )
  • 分类:行业资讯

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章