Go语言进化之路:1.19 到 1.24 版本新特性全景回顾(下)
Tony Bai

你好,我是 Tony Bai。
上一节我们讲了 1.19 到 1.24 版本中,关于语言语法和编译器运行方面的新特性,这一节我们继续来看工具和标准库方面的新特性。
工具链
Go 工具链是 Go 语言生态的重要组成部分,Go 团队持续在工具链方面进行投入,以提升开发者的开发体验和使用效率。下面我们来看看在这些版本中,Go 工具链都有哪些重要的改进。
重新明确向后兼容与向前兼容性
Go 1.21 在工具链方面最值得关注的就是 Go 团队对向后兼容(Backwards Compatibility)和向前兼容(Forwards Compatibility)的重新思考和新措施。
所谓向后兼容就是用新版 Go 编译器可以编译遗留的历史 Go 代码,并且可以正常运行。比如用 Go 1.21 版本编译器编译基于 Go 1.5 版本编写的 Go 代码。Go 在这方面做得一直很好,并提出了Go1 兼容性承诺。
而向前兼容指的是用旧版编译器编译新版本 Go 的代码,比如用 Go 1.19 版本编译器编译基于 Go 1.21 版本编写的 Go 代码。显而易见,如果 Go 代码中使用了 Go 1.21 引入的新语法特性,那么 Go 1.19 编译 Go 代码时会失败。
下面我们就来看一看,Go 1.21 中对于 Go 工具链的向前和向后兼容做了哪些明确和增强。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. Go 1.24版本引入了新的函数和方法,如Dir类型来表示受限的文件系统根目录,提供了在特定目录内执行文件系统操作的能力。 2. Go 1.24版本新增了runtime.AddCleanup函数,解决了runtime.SetFinalizer存在的问题和限制,允许对象的及时清理,并支持对象的循环清理。 3. Go 1.24版本新增了GOAUTH环境变量,使得go get能够支持需要身份验证的私有仓库,让用户可以通过go get命令获取私有仓库中的代码。 4. Go 1.24版本完成了hkdf、pbkdf2、sha3和mlkem等包的迁移,为密码学相关功能提供了更新和改进。 5. Go 1.23版本工具链中正式加入了Telemetry,用于改进Go语言和工具,了解Go工具链使用情况和问题并提供详细、及时的数据。 6. Go 1.22版本中,通过go work vendor可以将workspace中的依赖放到vendor⽬录下,并在构建时默认使用基于vendor的构建,提供了更便捷的依赖管理方式。 7. Go 1.22版本中,http.ServeMux的表达能力得到了大幅提升,从原先只支持静态路由,到新版本中支持多种特性,提升了HTTP路由的灵活性和功能性。 8. Go 1.21版本标准库正式加入了log/slog包,为日志记录提供了更加规范和便捷的方式。 9. Go 1.22中新增了math/rand/v2包,为标准库第一次为某个包建⽴v2版本,提供了对随机数生成功能的更新和改进。 10. Go 1.23的两个重要fix解决了Timer/Ticker的stop/reset问题,提升了定时器功能的稳定性和可靠性。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Tony Bai · Go 语言第一课》,新⼈⾸单¥59
《Tony Bai · Go 语言第一课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论