|Go 1.18 Beta 1 可用,带有泛型

【|Go 1.18 Beta 1 可用,带有泛型】|Go 1.18 Beta 1 可用,带有泛型

出品|开源中国
作者|白开水
Go 1.18 Beta 1 现已可用 , 这是 Go 1.18 的第一个预览版;Go 1.18 的正式版发布还需要几个月的时间 。
感兴趣的用户可以访问下载页面获取 Go 1.18 Beta 1 。
Go 1.18 Beta 1 是第一个包含 Go 对使用参数化类型的泛型代码的新支持的预览版本 。 官方表示 , 泛型是自 Go 1 发布以来 Go 最重要的变化 , 也是他们所做过的最大的单一语言变化 。


对于任何大型的新功能 , 新用户发现新错误是很常见的 , 我们不希望泛型成为这个规则的例外;一定要以适当的谨慎态度对待它们 。 此外 , 某些微妙的情况 , 例如特定类型的递归泛型类型 , 已推迟到未来版本 。 也就是说 , 我们知道一些早期采用者已经相当满意 , 如果你有你认为特别适合泛型的用例 , 我们希望你能尝试一下 。 我们发布了一个 关于如何开始使用泛型的简短教程 ,  并在上周的 GopherCon 上做了一个演讲 。 你甚至可以在 Go playground 的 Go dev 分支模式下试用  。
此外 , Go 1.18 Beta 1还包含:
  • 添加了对编写基于模糊测试的内置支持  , 以自动查找导致程序崩溃或返回无效答案的输入 。
  • 添加了一个新的“Go workspace mode” , 它允许用户同时使用多个 Go 模块 , 这对大型项目来说是一个重要的用例 。
  • 包含一个扩展go version -m命令 , 它现在可以记录 compiler flags 等构建细节。 程序可以使用 debug.ReadBuildInfo 查询自己的构建细节, 现在可以使用新的 debug/buildinfo 包从其他二进制文件中读取构建细节  。 此功能旨在成为任何需要为 Go 二进制文件生成软件物料清单 (SBOM) 的工具的基础 。
  • Go 1.17 曾添加了一个新的基于寄存器的调用约定 , 以加速 x86-64 系统上的 Go 代码 。 Go 1.18 Beta 1 将该功能扩展到 ARM64 和 PPC64 , 从而提高了 20% 的速度 。