第六届字节跳动青训营第六篇分享笔记 | 青训营

70 阅读2分钟

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上面.