go get用于下载并安装依赖库,更新go.mod;go install用于构建并安装可执行命令到$GOBIN。二者用途不同,不可混用,Go 1.18+后go get不再隐式安装命令。

在 Go 中安装第三方库主要通过 go get 命令完成,go install 则用于安装可执行命令(即带有 main 函数的程序)。两者用途不同,不能混用。
go get:下载并安装依赖包(含编译进当前项目)
go get 会下载指定模块、解析依赖、构建并将其添加到当前项目的 go.mod 文件中(Go 1.11+ 默认启用模块模式)。它默认只下载源码并更新依赖记录,不生成可执行文件。
- 安装一个库(如
github.com/spf13/cobra):go get github.com/spf13/cobra - 安装特定版本:
go get github.com/spf13/cobra@v1.8.0 - 安装最新主版本(如 v2+)需带版本后缀:
go get github.com/gorilla/mux@v1.8.5 - 如果项目启用了 Go Modules,
go get会自动写入go.mod和go.sum;若未启用,建议先运行go mod init your-module-name
go install:安装可执行命令(不修改当前项目依赖)
go install 从远程仓库下载指定包,并仅构建其中的 main 包,将生成的二进制文件放入 $GOBIN(默认为 $GOPATH/bin),供终端直接调用。它不会影响当前项目的 go.mod。
- 安装命令行工具(如
golang.org/x/tools/cmd/goimports):go install golang.org/x/tools/cmd/goimports@latest - 必须指定版本(Go 1.17+ 强制要求),常用
@latest或@v0.12.0 - 确保
$GOBIN在系统PATH中,否则无法在终端直接运行该命令
常见问题与注意事项
Go 1.18+ 默认使用模块模式,且 go get 不再支持隐式安装可执行文件(即不再等价于旧版 go install)。以下操作容易出错:
立即学习“go语言免费学习笔记(深入)”;
-
误用 go get 安装命令工具:例如
go get golang.org/x/tools/cmd/gopls在新版本中只会下载源码,不会生成可执行文件,应改用go install -
版本不明确导致拉取错误分支:不加
@version可能拉取master分支(已弃用),推荐显式指定@latest或语义化版本 -
代理设置影响下载:国内用户常因网络问题失败,可配置 GOPROXY:
go env -w GOPROXY=https://goproxy.cn,direct
验证是否安装成功
检查依赖是否写入模块:go list -m all | grep package-name
检查命令是否可用:which goimports 或 goimports -h
查看已安装的命令列表:ls $GOBIN(或 go env GOBIN 确认路径)










