go modules 是 golang 1.11 新加的特性。现在 1.12 已经发布了,是时候用起来了。Modules 官方定义为:
模块是相关 Go 包的集合。modules 是源代码交换和版本控制的单元。go 命令直接支持使用 modules,包括记录和解析对其他模块的依赖性。modules 替换旧的基于 GOPATH 的方法来指定在给定构建中使用哪些源文件。
如何使用 Modules?
1) 首先需要把 golang 升级到 1.11(现在 1.12 已经发布了,建议使用 1.12)
2) 设置 GO111MODULE
GO111MODULE
GO111MODULE 有三个值:off, on 和 auto(默认值)。
GO111MODULE=off,go 命令行将不会支持 module 功能,寻找依赖包的方式将会沿用旧版本那种通过 vendor 目录或者 GOPATH 模式来查找。
GO111MODULE=on,go 命令行会使用 modules,而一点也不会去 GOPATH 目录下查找。
GO111MODULE=auto,默认值,go 命令行将会根据当前目录来决定是否启用 module 功能。这种情况下可以分为两种情形:
当前目录在 GOPATH/src 之外且该目录包含 go.mod 文件
当前文件在包含 go.mod 文件的目录下面。
当 modules 功能启用时,依赖包的存放位置变更为 $GOPATH/pkg,允许同一个 package 多个版本并存,且多个项目可以共享缓存的 module。
go mod
golang 提供了 go mod 命令来管理包。
go mod 有以下命令: