当前位置: 首页 > article >正文

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 changes 和 iterators 的更多信息。

工具改进

  • 从 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


http://www.kler.cn/a/402760.html

相关文章:

  • 【通俗理解】边际化技巧在概率论中的应用——从公式到实例
  • CSP/信奥赛C++语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes
  • 内网渗透横向移动1
  • C# 特性与反射
  • Spring框架深度剖析:特性、安全与优化
  • 微网能量管理研究
  • c语言数据结构与算法--简单实现线性表(顺序表+链表)的插入与删除
  • pcap_set_timeout()函数
  • 文件 IO:高效读取文件的一些注意事项
  • SQL面试题——复杂窗口定义
  • 【机器学习chp5】线性回归
  • 【Python】30个Python爬虫的实战项目!!!(附源码)
  • 蓝牙电话-如何自动切换手机SIM卡(预研方向)
  • 985研一学习日记 - 2024.11.17
  • Map接口的特点
  • 使用 Postman 设置 Bearer Token 进行身份验证
  • 优化算法:粒子群算法
  • AI编程入门指南002:API、数据库和应用部署
  • 02向量与矩阵方程
  • Python学习30天
  • spring为何要用三级缓存
  • elasticsearch7.10.2集群部署带认证
  • 查找redis数据库的路径
  • 百度世界2024精选公开课:基于地图智能体的导航出行AI应用创新实践
  • K8S资源限制之ResourceQuota
  • 【qt】控件QLabel