今天 Go 1.13 终于发布了,虽然比预期延迟了半个月之久,但毕竟迟到总比不到好。
Go 1.13 的发布为 Go 带来了不少变化(详见:https://golang.org/doc/go1.13),有些变化可能是开发者无法直接感觉到的,但有些又是和开发者日常开发息息相关的。其中,Go modules 的扶正就是这次 Go 1.13 发布中开发者能直接感觉到的最大变化。
Go modules 最早发布于 Go 1.11,经过两个版本的更新后,它作为依赖管理解决方案来说现在已经变得光彩夺目。随着 Go modules 一起被发布的还有一个叫做 Module proxy protocol 的协议,通过它我们可以搭建 Go 模块代理,最后交由 `GOPROXY` 环境变量以指引 `go` 命令后续在抓取模块时的途径。对于咱们中国的开发者来说,一个优秀的 Go 模块代理可以帮助我们解决很多问题。比如 Go 语言中最知名的 `golang.org/x/...` 模块在中国大陆是无法访问到的,以前我们会用很多其他的办法来抓取他们,而若依靠一个可以访问到它们的模块代理,那么将事半功倍。更因为 Go 1.13 将 `GOPROXY` 默认成了中国大陆无法访问的 https://proxy.golang.org ,所以我们中国的开发者从今以后必须先修改 `GOPROXY` 才能正常使用 `go` 来开发应用了。为此,我们联合中国备受信赖的云服务提供商七牛云专门为咱们中国开发者而打造了一个 Go 模块代理:goproxy.cn。
goproxy.cn 是目前中国最可靠的 Go 模块代理,对于这点,如果有人存在质疑可以一一测试比对列表中所有能在国内访问的代理。至于那个和 goproxy.cn域名比较相近的 goproxy.io,我之前已经发表过一篇实测文章(详见:https://studygolang.com/topics/9994)。
goproxy.cn 是一个非营利性项目,目标是为中国和世界上其他地方的 Gopher 们提供一个免费的、可靠的、持续在线的且经过 CDN 加速的模块代理。正因为 goproxy.cn 由中国 Go 语言领域第一个吃螃蟹的大公司七牛云运行,所以它的稳定性和运行速度都是毋庸置疑的,如果你的网络环境本身不差的情况下,它能快到让你不可思议,比 `go get` 传统的抓取方式快上了不止几倍。有人可能会问阿里云的那个 mirrors.aliyun.com/goproxy 也很快,而且阿里云也是大厂,为什么不用阿里云的模块代理。我只能说,当我在使用阿里云的代理做初始化 github.com/kubernetes/kubernetes 的测试时,出现了大量的 404 错误以至于初始化操作无法完成……而且它还不支持代理 `GOSUMDB` 的默认值也就是 sum.golang.org,因此你还得手动修改 `GOSUMDB` 才能够正常使用 `go`。在速度旗鼓相当的情况下,为什么不考虑直接使用一个更稳定、高可用的呢?而且毕竟 goproxy.cn这个域名也很好记不是嘛~你只用记住 `goproxy` 和 `.cn`,就没了。
Q&A
问:在 Go 1.13 中如何使用 goproxy.cn?
答:一条`go env -w GOPROXY=https://goproxy.cn,direct` 即可。
问:在 Go 1.13 之前如何使用 goproxy.cn?
答:同样也是设置环境变量即可,但是得你手动配置,而且还不能使用上述的那个 `,direct` 后缀,因为那是 Go 1.13 刚加的特性。详细配置方法可以参见 goproxy.cn的 README 文件。
重磅活动预告
Gopher Meetup 武汉站即将开启。来自斗鱼、小米、极验、前青云的大咖讲师带来 Go 开发领域的一线实践经验分享,尽在9月21日,光谷软件园F3栋12楼鱼秀学堂!
报名请戳:阅读原文
Go中国
扫码关注
国内最大、最活跃的 Go 开发者社区