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 分支模式的 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 为 x86-64 系统添加了一个新的基于寄存器的调用约定,以提高 Go 代码的速度。Go 1.18 Beta 1 将此功能扩展到了 ARM64 和 PPC64,从而实现了高达 20% 的速度提升。

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

请参阅 Go 1.18 的完整 草拟版本说明 以获取更多详细信息。

一如既往,特别是对于 Beta 版本,如果您发现任何问题,请 提交 issue

希望您喜欢测试 Beta 版本,并祝您 2021 年剩余时间愉快。节日快乐!

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