gomodules

modules

modules在go的1.11版本中加入,并在最新的Go 1.13中对模块进行了重大改进和更改。

1.13版本前请务必开启模块

export GO111MODULE=auto

初始化

在你的项目目录中执行:

go mod init 13sai/game

会生成go.mod

1
2
3
4
module 13sai/game

go 1.12

然后你可以尽情编写你的项目代码,在你每次go get的时候,modules也会将你的安装的package加入go.mod

1
2
3
4
5
6
module 13sai/game

go 1.12

require github.com/gin-gonic/gin v1.5.0 // indirect

当然,你也可以像我一样,先去写代码,不去初始化modules,写完代码之后,初始化,然后执行:

go run main.go

当然,如果你没有翻墙,也没有使用国内镜像,很可能很多包都下载失败。

Goproxy 中国

Go 1.13 及以上(推荐)
打开你的终端并执行:

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

完成。

macOS 或 Linux
打开你的终端并执行:

1
$ export GOPROXY=https://goproxy.cn

或者

1
$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile && source ~/.profile

完成。

Windows
打开你的 PowerShell 并执行:

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

或者

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

完成。

本地包处理

本地宝使用这样的方式引入(local.com/13sai/game)

然后执行:

1
2
$ go mod edit -require=local.com/13sai/game@v1.0.0
$ go mod edit -replace=local.com/13sai/game@v1.0.0=$PWD

vendor备份

go mod vendor

可以将modules下载到本地vendor目录,其中也包含上面的本地包。

其他

1
2
3
4
5
go mod tidy //整理模块(拉取缺少的模块,移除不用的模块)
go mod download//下载依赖包到本地缓存
go mod graph //打印现有依赖结构
go mod verify //校验依赖
go mod why //解释为什么需要此模块

Modules的wiki