说明

Go Modules 是 Go 语言的代码依赖管理工具。类似于 PHP 中的 Composer、Node.js 中的 npm 。
Go Modules 由官方维护。自 Go 版本 1.14 开始,官方鼓励所有用户迁移到 Go Modules 以进行依赖项管理。
Go 1.11 之前,最令人诟病的问题是其缺少一个现代化、统一的、官方推荐的依赖管理工具。虽说开源社区自发创建了许多依赖工具,其中优秀的如 dep、glide 等。
然而,他们都有同一个问题 —— 非官方推荐。开源社区出现无意义的分裂和消耗。
Go 1.11 推出的模块(Modules)无疑为 Go 语言开发者打开了一扇新的大门。

弃用 $GOPATH

Go Modules 出现的目的之一就是为了解决 GOPATH 的问题。
在 $GOPATH 时代,Go 源码必须放置于 $GOPATH/src 下,抛弃 $GOPATH 的好处,是你能在任意地方创建的 Go 项目。
另外,$GOPATH 有非常落后的依赖管理系统。因在执行 go get 时,无法传达任何版本信息。
在构建 Go 应用程序上,我们无法保证其它人与你所期望依赖的第三方库是相同的版本(相同的代码),也就是说无法保证所有人的依赖版本都一致。

Go Module

go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。

GO111MODULE

要启用go module支持首先要设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:offonauto,默认值是auto

  1. GO111MODULE=off禁用模块支持,编译时会从GOPATHvendor文件夹中查找包。
  2. GO111MODULE=on启用模块支持,编译时会忽略GOPATHvendor文件夹,只根据 go.mod下载依赖。
  3. GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持。

简单来说,设置GO111MODULE=on之后就可以使用go module了,以后就没有必要在GOPATH中创建项目了,并且还能够很好的管理项目依赖的第三方包信息。
使用 go module 管理依赖后会在项目根目录下生成两个文件go.modgo.sum

Goproxy.cn

中国最可靠的 Go 模块代理。使用代理下载go module。
Goproxy.cn 完全实现了 GOPROXY 协议。并且它是一个由中国备受信赖的云服务提供商七牛云支持的非营利性项目。我们的目标是为中国的 Gopher 们提供一个免费的、可靠的、持续在线的且经过 CDN 在全球范围内加速的模块代理。请在 status.goproxy.cn 订阅我们的有关系统性能的实时和历史数据。
请注意,Goproxy.cn 只专注于服务在 https://goproxy.cn 的 Web 应用本身的开发。如果你正在寻找一种极其简单的方法来搭建你自己的 Go 模块代理,那么你应该看一下 Goproxy,Goproxy.cn 就是基于它开发的。
愉快地编码吧,Gopher 们!;-)

用法

Go 1.13 及以上(推荐)

打开你的终端并执行

  1. $ go env -w GO111MODULE=on
  2. $ go env -w GOPROXY=https://goproxy.cn,direct

完成。

macOS 或 Linux

打开你的终端并执行

  1. $ export GO111MODULE=on
  2. $ export GOPROXY=https://goproxy.cn

或者

  1. $ echo "export GO111MODULE=on" >> ~/.profile
  2. $ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
  3. $ source ~/.profile

完成。

Windows

打开你的 PowerShell 并执行

  1. C:\> $env:GO111MODULE = "on"
  2. C:\> $env:GOPROXY = "https://goproxy.cn"

或者

  1. 1. 打开“开始”并搜索“env
  2. 2. 选择“编辑系统环境变量”
  3. 3. 点击“环境变量…”按钮
  4. 4. 在“<你的用户名> 的用户变量”章节下(上半部分)
  5. 5. 点击“新建…”按钮
  6. 6. 选择“变量名”输入框并输入“GO111MODULE
  7. 7. 选择“变量值”输入框并输入“on
  8. 8. 点击“确定”按钮
  9. 9. 点击“新建…”按钮
  10. 10. 选择“变量名”输入框并输入“GOPROXY
  11. 11. 选择“变量值”输入框并输入“https://goproxy.cn”
  12. 12. 点击“确定”按钮

参考地址
https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md