go get命令详细介绍
go get是Go语言中的一个命令,用于下载、更新或安装依赖的Go模块(库)。它是一个重要的工具,用于处理模块的依赖关系,并将所需的第三方包下载到本地模块缓存中。
基本语法
go get [options] <module>[/...]
功能
- 下载依赖:将指定的模块或者包下载到本地模块缓存。
- 更新依赖版本:用于升级模块到特定版本。
- 安装可执行文件:如果模块提供了一个
main包,go get可以将其安装为一个可执行文件。
常见使用方式
1. 下载特定模块或包
假设需要下载第三方模块,例如 golang.org/x/tools:
go get golang.org/x/tools
这会下载模块并将其缓存到 $GOPATH/pkg/mod。
2. 安装特定版本模块
可以使用 @ 来指定模块的版本号。例如:
go get golang.org/x/tools@v0.1.0
这会下载版本为 v0.1.0 的模块。
3. 更新到最新版本
更新模块依赖到最新版本:
go get -u golang.org/x/tools
-u 选项用于最新版本的升级。
4. 安装一个可执行文件
如果模块中有 main 包,就可以安装相关的可执行文件。例如:
go get github.com/cespare/reflex
安装后,它会生成一个可执行文件并放置到 GOPATH/bin 或 GOBIN 指定的目录中。
5. 使用 Go 模块模式的依赖管理
在使用 Go 模块模式(即项目目录中有 go.mod 文件)时,go get 会自动更新 go.mod 文件和 go.sum 文件以反映新增或更新的模块信息。
注意事项
- GOPATH vs Go Modules: 在传统的
GOPATH模式下,go get直接把模块目录下载到src目录;而在使用 Go Modules 时,模块被缓存到GOPATH/pkg/mod或其他模块缓存路径。 - 版本号管理: 使用 Go Modules 时推荐明确指定模块版本号。
- 未来演变: 从 Go 1.17 开始,
go get的部分功能被削弱,例如不能用于安装可执行文件;推荐使用go install <module>@version替代。
举例说明
# 下载并升级一个模块 go get -u github.com/gin-gonic/gin # 安装指定版本的工具 go get github.com/tools/godep@v0.5.1 # 安装最新版本的工具 go get github.com/jstemmer/gotags
总之,go get 在开发者的依赖管理和可执行目标安装中非常重要,不过在 Go 1.17+ 的版本中,要注意其功能变化。

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接