Go编程语言开发团队在今天凌晨宣布正式发布Go 1.23版本。这个新版本带来了众多改进和新特性,让我们一起来简单看看主要亮点。
一. 语言特性更新
- 新的迭代器语法: 在"for-range"循环中,现在可以使用迭代器函数作为range表达式,如func(func(K) bool)。这支持用户自定义任意序列的迭代器。标准库的slices和maps包也添加了支持迭代器的新功能。
- 泛型类型别名预览: Go 1.23包含了对泛型类型别名的预览支持。
二. 工具链改进
- Go遥测系统: 引入了一个opt-in的遥测系统,收集使用情况和错误统计,以帮助理解Go工具链的使用情况和效果,默认不开启。
- go命令新功能:
- go env -changed: 显示与默认值不同的设置。
- go mod tidy -diff: 预览必要的go.mod和go.sum文件更改,而不实际修改文件。
- go vet增强: 现在可以报告对于目标Go版本来说过新的符号。
三. 标准库更新
- 新包引入:
- iter: 支持迭代器相关功能。
- structs: 定义用于修改结构体属性的标记类型(marker type)。
- unique: 提供用于interning可比较值的工具。
- time包优化: 改进了time.Timer和time.Ticker的实现。
- GODEBUG设置: 支持在go.mod和go.work文件中使用新的godebug指令
更多变化,可以参考release note:
https://go.dev/doc/go1.23
大家可以通过访问下载页面https://go.dev/dl/获取Go 1.23。对于已安装Go 1.22或Go 1.21的用户,可以使用go get toolchain@go1.23.0来下载和使用新的工具链。