slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
Go 1.23 新特性
17611538698
webmaster@21cto.com

Go 1.23 新特性

编程语言 0 1937 2024-09-02 08:23:26

图片

Go 1.23 已经发布,所以现在是探索新功能的好时机。官方发布说明有一些枯燥,我们总结了一个列表版本,展示了哪些变化以及新行为是什么。

  1. 新的迭代器语法

  • range-over-func:在 "for-range" 循环中,现在可以使用迭代器函数作为 range 表达式,如 func (func (K) bool)。这支持用户自定义任意序列的迭代器,增强了 Go 语言在处理复杂数据结构时的灵活性和表达力。标准库的 slices 和 maps 包也添加了支持迭代器的新功能。

2. 泛型类型别名预览

  • Go 1.23 包含了对泛型类型别名的预览支持。启用 GOEXPERIMENT=aliastypeparams 可以在包内使用泛型类型别名(跨包使用暂不支持)。这是 Go 语言在类型系统上的重大突破,使得开发者能够创建通用类型,从而减少重复代码并提高代码的复用性。

3. 遥测系统

  • 引入了一个可选的遥测系统,用于收集 Go 工具链的使用情况和错误统计,以帮助理解 Go 工具链的使用情况和效果。通过 go telemetry on 命令可以启用遥测系统,但默认不开启。

4. Go 命令改进

  • go env -changed:显示与默认值不同的环境变量设置,方便开发者追踪和管理环境依赖。

  • go mod tidy -diff:提供预览 go.mod 和 go.sum 文件变更的功能,无需实际修改文件,便于开发者提前评估更改影响。

  • go vet 增强:现在可以报告对于目标 Go 版本来说过新的符号,有助于开发者在向新版本迁移时发现问题并及时解决。

5. 标准库和工具包更新

  • iter 包:支持迭代器相关功能,增强对复杂数据结构的处理能力。

  • structs 包:定义用于修改结构体属性的标记类型,简化结构体操作。

  • unique 包:提供工具用于实现值的 interning(类似于“字符串驻留”或“哈希压缩”),提高内存使用效率。

  • time 包优化:改进了 time.Timer 和 time.Ticker 的实现,提高了时间相关操作的性能和准确性。

  • slices 包新增 Repeat 方法:该方法会返回一个新的切片,函数的作用是将所提供的切片,按给定的次数进行重复。

  • os.DirFS 方法:返回以目录 dir 为根的文件树的文件系统(fs.FS),再结合 os.CopyFS 方法可以实现一次性的递归复制文件和目录。

  • panic 函数改进:在新版本中,panic 函数会用制表符缩进错误信息的第二行和后续行,以区别于第一个 goroutine 的堆栈跟踪。

  • net.http 标准库新增 ParseCookie 和 ParseSetCookie 方法:这两个方法用于从 Cookie 标头字符串中提取 Cookie 结构体,使得处理 Cookie 变得更加方便和直接。

6. 其他改进

  • 编译器优化:通过重叠函数中局部变量的栈帧槽位,减少了栈的使用,并通过 Profile Guided Optimization(PGO)改善了编译时间。

  • 链接器限制:链接器现在不允许使用 //go:linkname 指令引用未标记 //go:linkname 的标准库内部符号,除非这些符号已有较大使用量。

  • 操作系统要求:Go 1.23 开始要求 macOS 11 Big Sur 或更高版本,是最后一个支持 Linux 2.6.32 及更高版本的发行版,Go 1.24 将要求 Linux 3.17 或更高版本。

  • ARM64 和 RISC-V:引入了新的环境变量 GOARM64 和 GORISCV64,用于指定 ARM64 和 RISC-V 目标架构版本。

Go 1.23 的发布标志着 Go 语言在标准化和工具集方面的持续进步,为开发者提供了更加高效、灵活的编程环境。这些新特性和改进不仅提升了 Go 语言本身的竞争力,也为开发者社区的创新提供了更多可能性。

相关参考:

https://pkg.go.dev/math/big


图片

编辑:万能的大雄

评论