Go 博客

Go 1.18 Beta 1 已发布,支持泛型

Russ Cox,代表 Go 团队
2021 年 12 月 14 日

我们刚刚发布了 Go 1.18 Beta 1,您可以访问下载页面获取。

Go 1.18 的官方版本还需要几个月才能发布。这是 Go 1.18 的第一个预览版本,让您可以试用、体验并告诉我们您遇到的问题。Go 1.18 Beta 1 凝聚了 Google 整个 Go 团队和全球 Go 贡献者的大量工作,我们很高兴听到您的反馈。

Go 1.18 Beta 1 是第一个包含 Go 对使用参数化类型的泛型代码新支持的预览版本。泛型是自 Go 1 发布以来 Go 最重要的变化,也是我们有史以来最大的单次语言变更。对于任何大型的新功能,新用户发现新 bug 是常见的,我们不认为泛型会例外;请务必谨慎对待。此外,某些特殊情况,例如特定类型的递归泛型类型,已推迟到将来的版本。尽管如此,我们知道一些早期采用者非常满意,如果您有认为特别适合泛型的用例,我们希望您能尝试一下。我们发布了关于如何开始使用泛型的简短教程,并在上周的 GopherCon 上做了一个演讲。您甚至可以在Go dev branch 模式下的 Go playground上尝试。

Go 1.18 Beta 1 添加了对编写基于模糊测试的测试的内置支持,以自动查找导致程序崩溃或返回无效结果的输入。

Go 1.18 Beta 1 添加了一个新的“Go 工作空间模式”,该模式允许您同时使用多个 Go 模块,这对于大型项目是一个重要的用例。

Go 1.18 Beta 1 包含一个扩展的 go version -m 命令,该命令现在记录构建详细信息,例如编译器标志。程序可以使用 debug.ReadBuildInfo 查询自身的构建详细信息,并且现在可以使用新的 debug/buildinfo 包读取其他二进制文件的构建详细信息。此功能旨在成为任何需要为 Go 二进制文件生成软件物料清单 (SBOM) 的工具的基础。

今年早些时候,Go 1.17 添加了一种新的基于寄存器的调用约定,以加快 Go 代码在 x86-64 系统上的速度。Go 1.18 Beta 1 将该功能扩展到 ARM64 和 PPC64,带来了高达 20% 的速度提升。

感谢所有为这个 beta 版本做出贡献的人,特别感谢 Google 团队多年来为实现泛型而不懈努力。这是一条漫长的道路,我们对结果非常满意,也希望您喜欢。

有关更多详细信息,请参阅完整的Go 1.18 发布说明草稿

和往常一样,特别是对于 beta 版本,如果您发现任何问题,请提交问题

希望您喜欢测试这个 beta 版本,也希望大家在 2021 年剩下的时间里好好休息。节日快乐!

下一篇文章:1.18 的两个新教程
上一篇文章:Go 的十二年
博客索引