# go get
go get
是 Go 编程语言中用于获取和安装外部包的命令。
- 获取并安装外部包
- 可以通过
go get [包路径]
的命令下载指定的 Go 包并安装到当前工作环境中。例如go get github.com/gin-gonic/gin
会下载并安装 Gin web 框架。
- 可以通过
- 更新已安装的包
- 使用
go get -u [包路径]
可以更新已安装的包到最新版本。
- 使用
- 获取指定版本的包
go get [包路径]@[版本号]
可以获取指定版本的包。例如go get github.com/gin-gonic/gin@v1.7.7
会安装 Gin v1.7.7 版本。
- 获取开发版本的包
go get [包路径]@master
可以获取指定包的开发版本 (master 分支)。
- 删除已安装的包
- 虽然
go get
没有直接删除包的命令,但可以通过go clean -i [包路径]
来删除已安装的包。
- 虽然
- 支持代理和私有仓库
go get
支持通过 GOPROXY 代理和私有 Git 仓库来获取外部包。
# go mod
go mod
是 Go 1.11 版本引入的新的依赖管理工具,它用于管理 Go 项目的依赖包。相比之前的 go get
命令, go mod
提供了更强大和灵活的依赖管理功能
- 初始化模块
go mod init [module-path]
用于在当前目录下初始化一个 Go 模块,并创建go.mod
文件。
- 添加依赖
go get [package]
会自动添加指定的依赖包到go.mod
文件中。go mod tidy
会分析当前项目的依赖,添加缺失的依赖,并移除无用的依赖。
- 升级依赖
go get -u [package]
可以升级指定的依赖包到最新版本。go get -u=patch [package]
可以升级指定的依赖包到最新的补丁版本。
- 降级依赖
go get [package]@[version]
可以指定降级到某个具体版本。
- 剔除依赖
go mod tidy
会移除项目中没有被使用的依赖包。go mod edit -droprequire=[package]
可以手动删除某个依赖。
- 查看依赖图
go mod graph
可以查看项目的依赖图谱。go mod why [package]
可以查看某个依赖为何会被引入。
- vendor 依赖
go mod vendor
可以将项目的所有依赖复制到 vendor 目录下。go build -o app -mod=vendor
可以使用 vendor 目录下的依赖进行构建。
# go get -u [package]
和 go get -u=patch [package]
之间的区别
go get -u [package]
:- 这个命令会将指定的依赖包升级到最新版本,不管是大版本、小版本还是补丁版本。
- 例如原先依赖的包是 v1.2.3, 执行
go get -u github.com/example/package
后会升级到最新的版本,可能是 v2.0.0 或 v1.3.0 等。
go get -u=patch [package]
:- 这个命令会将指定的依赖包升级到最新的补丁版本。
- 例如原先依赖的包是 v1.2.3, 执行
go get -u=patch github.com/example/package
后只会升级到 v1.2.4, 不会升级到大版本或小版本的新版本。