1 什么是Go Modules

Go modules 是 Go 语言的依赖解决方案,发布于 Go1.11,正式于 Go1.14 推荐在生产上使用。
image.png

2 如何使用go mod来管理项目依赖包

go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct

这样的话, 下面两个设置就被添加到系统的环境变量中了

GO111MODULE=on GOPROXY=https://goproxy.cn,https://goproxy.io,direct

注:

GO111MODULE 开启则使用go mod, 否则使用GOPATH GOPROXY是设置国内的镜像, 实现快速拉取第三方依赖包 direct的意思是 如果在镜像站点未找到指定包, 则直接到import中指定的导包路径中寻找指定包

然后项目中还要生成go mod文件, 比如项目名根目录叫test

go mod init test

3 go mod命令

(1) go mod tidy

tidy会检测该文件夹目录下所有引入的第三方依赖, 写入 go.mod 文件,
并把没有使用的第三方依赖从go.mod文件中删除

(2) go mod download

go mod download用于将go.mod中的第三方依赖的指定版本下载至本地

(3) go get …

go get用于下载或更新第三方依赖

  • 下载: go get github.com/gin-gonic/gin
  • 更新: go get -u github.com/gin-gonic/gin
  • 更新到特定版本: go get github.com/user/repo@version
  • 更新到某个分支最新的代码: go get github.com/user/repo@master
  • 更新到最新的修订版(只改bug的版本): go get -u=patch github.com/user/repo
  • 自动整理第三方依赖到go.mod, 并下载最新版到本地: go get

    (4) go mod verify …

    校验依赖是否被篡改

    (5) go mod why …

    查看为什么需要依赖某模块

    (6) go mod graph

    查看现有的依赖结构

    (7) go mod vendor

    导出项目所有的依赖到vendor目录