阅读本文大概需要 3 分钟。
大家好,我是站长 polarisxu。
是的,没看错,Go 1.16 刚正式发布,但这里说的是 Go1.17 将会包含的改变(不出意外的话),我会出一系列文章介绍 Go1.17 的变化。(好吧,内卷了,哈哈哈哈!)
关于 Go 1.16 的变化。Reddit 上有一张图总结的挺好的:
相关的知识点,我之前也写过很好几篇文章,有兴趣的可以看看:
刚刚 Go 官方发表博文[1],针对 Go1.16 中 “Modules on by default” 进行了详细讲解。默认启用 Module 是什么意思?也就是说 GO111MODULE=on,进一步,即使没有 go.mod ,go 命令现在仍以模块感知模式(module-aware mode)构建包。
尽管如此,你至少还可以手动禁用 Module,即设置 GO111MODULE=off。
但官方计划在 Go1.17 中移除 GO111MODULE 这个环境变量,届时将只能使用 Module 模式。Go 语言总是针对某个问题的尽量只有一种解决方案,保持其简单的“本性”,我个人还是挺喜欢的。当然我相信也会有人不喜欢。
这里给大家一些建议:
此外,在 Go1.17 中关于 module 的特性还会有其他改进,比如支持 lazy module loading[2],这应该会使模块加载过程更快,更稳定。对 Go1.17 中其他设计模块变化的部分,可以通过 https://github.com/golang/go/labels/modules 查看。
对于 Go 做出废弃 GOPATH 的决定,你怎么看?
博文: https://docs.studygolang.com/blog/go116-module-changes
[2]lazy module loading: https://github.com/golang/go/issues/36460
欢迎关注我