“你装了 Go 1.26,却写不了 Go 1.26 的代码?”——复盘 go mod init 的降级风波

💡 原文中文,约4800字,阅读约需12分钟。
📝

内容提要

Go 1.26发布后,go mod init默认生成版本为1.25,引发开发者对新特性的使用争议。官方认为此举有助于兼容性,但开发者认为影响体验,社区呼吁更改默认行为以支持普通开发者。

🎯

关键要点

  • Go 1.26发布后,go mod init默认生成版本为1.25,引发开发者争议。
  • 官方认为此举有助于兼容性,但开发者认为影响体验。
  • 开发者需手动修改go.mod或使用命令go get go@1.26.0以使用新特性。
  • Go核心团队认为不要求最新版本是为了保护下游用户的兼容性。
  • 社区反对这一决策,认为违背了“最小惊讶原则”。
  • 大多数go mod init用于创建私有项目,强迫开发者手动修改不合理。
  • GOTOOLCHAIN机制已解决版本不匹配问题,官方担忧不再成立。
  • Go核心团队在治理上的态度引发不满,拒绝重新审视决策。
  • 开发者希望工具链能提供无缝的开发体验,而非过度强调兼容性。
  • Go 1.26的降级策略可能会影响开发者的使用体验,需适应新常态。

延伸问答

Go 1.26发布后,go mod init的默认版本是什么?

Go 1.26发布后,go mod init默认生成的版本为1.25。

为什么Go核心团队选择将go mod init的默认版本设置为1.25?

Go核心团队认为这样可以保护下游用户的兼容性,避免新特性影响尚未升级的用户。

开发者如何才能在Go 1.26中使用新特性?

开发者需要手动修改go.mod文件,或使用命令go get go@1.26.0来使用新特性。

社区对Go 1.26的降级策略有什么反应?

社区普遍反对这一策略,认为它违背了“最小惊讶原则”,影响了开发者体验。

Go 1.26的降级策略对开发者的影响是什么?

降级策略可能导致开发者在使用新特性时感到困惑和挫败,影响开发体验。

Go核心团队对社区反馈的态度是什么?

Go核心团队对社区的反馈态度冷漠,表示不会重新审视已做出的决策。

➡️

继续阅读