Skip to content

包管理工具

  • 一个模块是 Go packages 的集合,定义在项目根目录下的 go.mod 文件。
  • go.mod 文件定义了模块的路径,这也是使用当前项目中包的导入路径。
  • go.mod 文件还定义了模块的依赖项,这些是项目成功构建所需的其他模块。

go mod

  • go 官方管理包工具
  • 使用 go mod 必须设置 GO111MODULE=on
bash
go env -w GO111MODULE=on

镜像源

  • 国内下载慢需要换源
bash
# 官方
go env -w GOPROXY=https://goproxy.io,direct
# 阿里云
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
# 腾讯
go env -w GOPROXY=https://goproxy.tencent.com,direct

常规命令

bash
go mod init        #初始化当前文件夹, 创建go.mod文件
go mod tidy        #增加缺少的module,删除无用的module
go mod vendor      #将依赖复制到vendor下

go mod download    #下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit        #编辑go.mod文件
go mod graph       #打印模块依赖图

go mod verify      #校验依赖
go mod why         #解释为什么需要依赖

go get

  • 下载项目依赖
  • 会更新 go.mod/go.sum 文件

go install

  • 下载二进制工具
  • 会编译并安装可执行文件到 $GOPATH/bin 目录
  • 不会更新 go.mod/go.sum 文件

go get 对比 go install

特性go getgo install
主要功能管理项目依赖编译并安装可执行文件
依赖处理会更新 go.mod/go.sum不影响项目依赖
安装目录$GOPATH/pkg$GOPATH/bin
输出结果下载的源代码可执行文件
常用场景例如:使用 gorm例如:使用 gf 脚手架

更新依赖

  • 下载最新的依赖
  • 会更新 go.mod/go.sum 文件
bash
# 更新所有依赖
go get -u