自学内容网 自学内容网

Go 1.23 is released(翻译)


Dmitri Shuralyov,代表 Go 团队。

2024 年 8 月 13 日。

今天,Go 团队很高兴发布 Go 1.23,您可以通过访问下载页面获取它。

如果您的计算机上已安装 Go 1.22 或 Go 1.21,您也可以在现有模块中尝试 go get toolchain@go1.23.0。这将下载新的工具链,让您立即开始在模块中使用它。稍后,当您准备好完全切换到 Go 1.23 并将其作为模块所需的最低 Go 版本时,您可以跟进 go get go@1.23.0。有关此功能的更多信息,请参阅使用 go get 管理 Go 版本模块要求

Go 1.23 与 Go 1.22 相比有许多改进。其中一些亮点包括:

语言变化

“for-range”循环中的范围表达式现在可以是迭代器函数,例如 func(func(K) bool)。这支持用户定义任意序列的迭代器。标准库 slices 和 maps 包中增加了几个与迭代器配合使用的功能,以及一个新的 iter 包。例如,如果您希望将映射 m 的键收集到一个切片中,然后对其值进行排序,您可以在 Go 1.23 中使用

slices.Sorted(maps.Keys(m))

Go 1.23 还包括对泛型类型别名的预览支持。

在发行说明中阅读有关 language changesiterators 的更多信息。

工具改进

  • 从 Go 1.23 开始,Go 工具链可以收集使用情况和故障统计信息,以帮助了解 Go 工具链的使用方式及其运行情况。这是 Go 遥测,一种可选系统。请考虑选择加入,以帮助我们保持 Go 正常运行并更好地了解 Go 的使用情况。在发行说明中了解有关 Go telemetry 的更多信息。
  • go 命令具有新的便利性。例如,运行 go env -changed 可以更轻松地仅查看有效值与默认值不同的设置,而 go mod tidy -diff 有助于确定对 go.mod 和 go.sum 文件的必要更改而无需修改它们。在发行说明中阅读有关 Go command 的更多信息。
  • go vet 子命令现在会报告对于目标 Go 版本来说太新的符号。有关 tools 的更多信息,请参阅发行说明。

标准库改进

  • Go 1.23 改进了 time.Timer 和 time.Ticker 的实现。有关 timer changes 的更多信息,请参阅发行说明。
  • Go 1.23 标准库中总共有 3 个新包:iter、structs 和 unique。包 iter 如上所述。包 structs 定义标记类型以修改结构的属性。包 unique 提供规范化(“驻留”)可比较值的功能。有关 new standard library packages 的更多信息,请参阅发行说明。
  • 发行说明中库的 minor 改动部分列举了标准库的许多改进和新增内容。“Go、向后兼容性和 GODEBUG”文档列举了 Go 1.23 GODEBUG 设置中的新内容
  • Go 1.23 支持 go.mod 和 go.work 文件中的新 godebug 指令,以允许分别控制默认 GODEBUG 和 go.mod 的“go”指令,以及两个版本(Go 1.21)之前提供的 //go:debug 指令注释。请参阅有关 Default GODEBUG Values 的更新文档。

更多改进和变化

  • Go 1.23 增加了对 64 位 RISC-V 上的 OpenBSD 的实验性支持(openbsd/riscv64)。有一些与 Linux、macOS、ARM64、RISC-V 和 WASI 相关的小改动。在发行说明中了解有关移植的更多信息。
  • 使用性能数据引导优化 (PGO) 时的构建时间减少,并且 386 和 amd64 架构上 PGO 的性能得到提升。在发行说明中了解有关运行时、编译器和链接器的更多信息。

我们鼓励每个人都阅读 Go 1.23 发行说明,以获取有关这些变化的完整详细信息以及 Go 1.23 的所有其他新功能。

在接下来的几周内,请留意后续博客文章,它们将更深入地探讨这里提到的一些主题,包括“range-over-func”、新的独特包、Go 1.23 计时器实现变化等等。


感谢为此版本做出贡献的所有人,他们编写了代码和文档、报告错误、分享反馈并测试了候选版本。您的努力有助于确保 Go 1.23 尽可能稳定。与往常一样,如果您发现任何问题,请提交问题。

Enjoy Go 1.23!

Next article: Range Over Function Types
Previous article: Secure Randomness in Go 1.22
Blog Index


参考文献

Go 1.23 is released!
Go 1.23 Release Notes


原文地址:https://blog.csdn.net/K346K346/article/details/143864056

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!