go get是Go语言中的一个命令,用于下载、更新或安装依赖的Go模块(库)。它是一个重要的工具,用于处理模块的依赖关系,并将所需的第三方包下载到本地模块缓存中。

基本语法

go get [options] <module>[/...]

功能

  1. 下载依赖:将指定的模块或者包下载到本地模块缓存。
  2. 更新依赖版本:用于升级模块到特定版本。
  3. 安装可执行文件:如果模块提供了一个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/binGOBIN 指定的目录中。


5. 使用 Go 模块模式的依赖管理

在使用 Go 模块模式(即项目目录中有 go.mod 文件)时,go get 会自动更新 go.mod 文件和 go.sum 文件以反映新增或更新的模块信息。


注意事项

  1. GOPATH vs Go Modules: 在传统的GOPATH模式下,go get直接把模块目录下载到src目录;而在使用 Go Modules 时,模块被缓存到 GOPATH/pkg/mod 或其他模块缓存路径。
  2. 版本号管理: 使用 Go Modules 时推荐明确指定模块版本号。
  3. 未来演变: 从 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+ 的版本中,要注意其功能变化。



go get命令详细介绍插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.choupangxia.com/2025/10/10/go-get-command/