Go Modules(模块)
今天我开始了解了Go的最新包管理工具——Go Modules,这是自Go1.11版本以后引入的。它允许在任何地方运行你的代码,不再需要GOPATH环境变量。
1. 创建一个新项目
首先,我创建了一个新目录,并且进入到该目录中:
mkdir myproject && cd myproject
然后初始化一个新的模块:
go mod init github.com/myuser/myproject
执行上述命令后,会生成一个go.mod文件,内容如下:
module github.com/myuser/myproject
go 1.x // x为你当前使用的go版本.
2. 添加依赖
当我编写代码并导入包时,只需简单地运行go build或者go test等命令即可。例如,在我的项目中使用了gin框架,那么在构建时就会自动添加到我的模块里:
import "github.com/gin-gonic/gin"
...
func main() {
r := gin.Default()
}
然后运行以下命令来构建项目:
go build .
此时查看我们的go.mod文件就可以发现新增了相关依赖信息。
注意: 如果要手动添加依赖项,则可以使用 go get package@version 命令进行操作。
3. 更新和删除依赖
如果需要更新某个包到最新版本可以使用:
go get -u github.com/gin-gonic/gin
如果想要删除未被用到的依赖, 可以使用:
go mod tidy
二、旧版工具:dep 和 glide 等
在 Go Modules 出现之前,社区有很多其他第三方包管理工具如 dep、glide 等。但是从 Go1.13 开始,默认已经启用了 module 模式,所以对于新项目来说更推荐直接采用 Go Modules 进行包管理。至于老项目还在用 dep 或 glide 的话应考虑迁移到 modules 来享受官方支持。
- dep: Dep 是 Golang 官方实验性质的版本控制器,也是之前比较常见的一种选择。
- glide: Glide 在其出现之初曾广泛被应用于各类 GoLang 项目中。
尽管他们都有各自独特和优秀的功能点,但随着Go Modules成为官方推荐方式,我决定将主要精力放在学习和掌握Modules上面.