为什么需要依赖管理

都存放
go module默认依赖管理工具

GO111MODULE

开启关闭
  • GO111MODULE=off —— 禁用 go module,程序编译时自动从 GOPATH、vendor 文件夹中查找包;
  • GO111MODULE=on —— 启动 go module,程序编译时忽略 GOPATH 和 vendor 文件夹,只根据 go.mod下载依赖;
  • GO111MODULE=auto —— 当项目不存在于 GOPATH/src 目录下,且项目根目录存在 go.mod 文件时,开启 go module。

Windows 下开启 GO111MODULE 的命令为:

set GO111MODULE=on

MacOS 或者 Linux 下开启 GO111MODULE 的命令为:

export GO111MODULE=on
GOPATH/src 目录

题外话:第三方库存放位置

PythonPHP并不在本项目路径你指定的vendor 虚拟环境目录GOPATH/pkg/mod
GOPATH/pkg/mod
不同项目不同版本同一个第三方库相同版本
相同版本第三方库
gofmt不同的代码风格发明者都帮你决定好安心搬砖

三位发明者大概是个温柔的独裁者。这也是 Golang的语言哲学 —— 它都帮你决定好了,你没选择。

GOPROXY

GOPROXY默认值

常用 go mod 命令

go mod init        初始化当前文件夹, 创建go.mod文件
go mod download    下载依赖第三方库到本地cache(默认GOPATH/pkg/mod)
go clean -modcache 清理第三方库缓存(默认GOPATH/pkg/mod)

go get github.com/gogf/gf@master  下载 gf 库主分支代码
go list -m -versions github.com/gogf/gf 查看可下载版本
go get ./...       下载项目依赖
go get -u          更新第三方库

go mod verify      验证依赖是否正确
go mod tidy        增加缺少的module,删除无用的module
go mod vendor      将依赖复制到vendor下
go mod graph       以文本模式打印模块需求图