Go 1.12中值得关注的几个变化

💡 原文中文,约7400字,阅读约需18分钟。
📝

内容提要

Go 1.12版本于2月末发布,新增了go modules机制和对WebAssembly的支持,保持与Go 1的兼容性,并增加了对aix/ppc64和windows/arm的支持。优化了go modules的使用,简化了包获取过程,引入了go指示字段。Go 1.12是最后一个支持binary-only package的版本,运行时和标准库进行了小幅优化,增加了对TLS 1.3的支持。

🎯

关键要点

  • Go 1.12版本于2月末发布,新增了go modules机制和对WebAssembly的支持。

  • Go 1.12保持与Go 1的兼容性,并增加了对aix/ppc64和windows/arm的支持。

  • Go 1.12是最后一个支持binary-only package的版本,后续版本将不再支持。

  • Go 1.12对go modules的使用进行了优化,简化了包获取过程。

  • Go 1.12增加了go指示字段,用于指示模块所使用的Go版本。

  • 运行时和标准库进行了小幅优化,增加了对TLS 1.3的支持,但默认不开启。

  • Go安装包中移除了go tour,预计将有更多非核心功能被移除以减小安装包体积。

  • 在Go 1.12中,build cache成为必需,无法关闭。

🔎

延伸解读

Go 1.12的兼容性与可移植性

Go 1.12版本继续保持与Go 1的兼容性,确保旧代码能够顺利编译和运行。这对于维护遗留系统至关重要。同时,新增对aix/ppc64和windows/arm的支持,进一步提升了Go语言的可移植性,开发者可以在更多平台上使用Go进行开发。

Go Modules的优化与使用

Go 1.12对Go Modules进行了显著优化,简化了包获取过程,开发者在使用时不再需要显式创建go.mod文件。这一变化降低了使用门槛,提升了开发效率,尤其是在非GOPATH路径下的项目中,能够更方便地管理依赖。

对binary-only package的支持终止

Go 1.12是最后一个支持binary-only package的版本,未来版本将不再提供此功能。这意味着开发者需要考虑源码的分发问题,尤其是在商业环境中,可能需要寻找其他解决方案,如使用插件或共享库,以确保安全性和兼容性。

Build Cache的强制使用

在Go 1.12中,build cache成为必需,无法关闭。这一变化旨在提高编译效率,但也可能对某些开发者造成困扰,特别是那些习惯于关闭此功能的用户。因此,开发者需要适应这一新机制,以确保顺利编译和构建项目。

延伸问答

Go 1.12版本有哪些新特性?

Go 1.12版本新增了go modules机制和对WebAssembly的支持,同时保持与Go 1的兼容性。

Go 1.12如何优化了go modules的使用?

Go 1.12优化了go modules的使用,简化了包获取过程,并支持并发下载和解压操作。

Go 1.12对旧系统的支持情况如何?

Go 1.12是最后一个支持macOS 10.10和FreeBSD 10.x的版本,逐渐放弃对一些老版本系统的支持。

Go 1.12中对binary-only package的支持有什么变化?

Go 1.12是最后一个支持binary-only package的版本,后续版本将不再支持此功能。

Go 1.12中TLS 1.3的支持情况如何?

Go 1.12增加了对TLS 1.3的支持,但默认不开启,预计在Go 1.13中将成为默认开启功能。

Go 1.12中build cache的变化是什么?

在Go 1.12中,build cache成为必需,无法关闭,之前的GOCACHE=off设置将不再有效。

🏷️

标签

➡️

继续阅读