AI 中文社区(简称 AI 中文社),是国内学习交流AI人工智能技术的中文社区网站,这里可获取及贡献任何AI人工智能技术,我们追求自由、简洁、纯粹、分享的多元化人工智能社区。
Go 1.23.0 正式发布,从语法、工具链、标准库等多方面进行了改进
Golang 团队于2024年8月13日,对外正式发布了 Go 1.23.0,此版本相比 Go 1.22 带来了哪些众多改进和新特性,下面简单看看主要亮点。
一、语言语法变化
在 “for-range” 循环中的范围表达式现在可以是迭代器函数,例如 func (func (K) bool)。这支持对任意序列的用户自定义迭代器。标准切片和映射包中增加了一些与迭代器配合使用的内容,还有一个新的 iter 包。例如,如果您希望将映射 m 的键收集到一个切片中,然后对其值进行排序,在 Go 1.23 中您可以使用 slices.Sorted (maps.Keys (m)) 来实现。
Go 1.23 还包括对泛型类型别名的预览支持。
二、工具链改进
从 Go 1.23 开始,Go 工具链可以收集使用情况和故障统计信息,以帮助了解 Go 工具链的使用方式以及其工作效果。这就是 Go 遥测,一个可选加入的系统。请考虑选择加入,以帮助我们保持 Go 良好运行,并更好地了解 Go 的使用情况。在发行说明中阅读更多关于 Go 遥测 的信息。
go 命令有一些新的便利功能。例如,运行 “go env -changed” 可以更轻松地只看到那些有效值与默认值不同的设置,“go mod tidy -diff” 有助于确定对 go.mod 和 go.sum 文件进行必要修改的内容,而无需修改它们。在发行说明中阅读更多关于 Go 命令 的信息。
go vet 子命令增强,现在会报告对于目标 Go 版本来说太新的符号。在发行说明中阅读更多关于 工具 的信息。
三、标准库更新
Go 1.23 改进了 time.Timer 和 time.Ticker 的实现。在 发行说明 中阅读更多关于计时器变化的信息。
Go 1.23 标准库中共有 3 个新的包:iter、structs 和 unique。上面提到了 iter 包。structs 包定义了标记类型来修改结构体的属性。unique 包提供了规范化(“驻留”)可比较值的设施。在发行说明中阅读更多关于 新标准库包 的信息。
在发行说明的库部分的小变化中,列出了标准库的许多改进和添加内容。“Go、向后兼容性和 GODEBUG” 文档列举了 Go 1.23 新增的 GODEBUG 设置。
Go 1.23 支持在 go.mod 和 go.work 文件中的新 godebug 指令,除了两个版本前(Go 1.21)提供的 //go:debug 指令注释外,还可以对默认的 GODEBUG 和 go.mod 的 “go” 指令进行单独控制。请参阅关于 默认 GODEBUG 值 的更新文档。
四、更多改进和变化
Go 1.23 为 64 位 RISC-V 上的 OpenBSD(openbsd/riscv64)添加了实验性支持。对于 Linux、macOS、ARM64、RISC-V 和 WASI 有一些小的变化。在发行说明中阅读更多关 端口 的信息。
使用基于配置文件的优化(PGO)时的构建时间减少了,并且在 386 和 amd64 架构上使用 PGO 的性能得到了提高。在发行说明中阅读更多关于 运行时、编译器和链接器 的信息。
更多信息请查看 发布详情,大家可以通过访问 下载页面 获取 Go 1.23.0,对于已安装 Go 1.22 或 Go 1.21 的用户,可以使用 go get toolchain@go1.23.0 来下载和使用新的工具链。
游客
- 一字一句需斟酌,一言一语显风范。
- 评论消耗5积分,点赞、收藏消耗3积分。
感谢投稿,remark