go get用于管理依赖库并更新go.mod,go install用于安装CLI工具且不修改go.mod;二者用途不同,Go 1.17+需在模块模式下使用,通过go mod init、go list -m和go env GO111MODULE确认环境。

在 Go 中安装依赖包主要通过 go get,而 go install 主要用于安装可执行命令(如 CLI 工具),两者用途不同,不能混用。Go 1.17+ 默认启用模块模式(Go Modules),推荐始终在模块环境下操作,避免 GOPATH 旧模式带来的混乱。
确认是否在 Go 模块环境中
运行以下命令检查当前目录是否已初始化为模块:
go mod init
go list -m(查看当前模块名)
go env GO111MODULE(应返回 on)
不在模块中直接执行 go get 可能导致包被下载到 GOPATH/pkg/mod,但不会写入 go.mod,后续构建可能出错。
使用 go get 安装依赖库
go get 会下载包、更新 go.mod 和 go.sum,并自动满足 import 引用需求。常用方式包括:
立即学习“go语言免费学习笔记(深入)”;
-
安装最新版:
go get github.com/gin-gonic/gin -
安装指定版本:
go get github.com/spf13/cobra@v1.8.0 -
安装主分支最新提交:
go get github.com/golang/freetype@master -
仅下载不写入依赖(临时使用):
go get -d github.com/go-sql-driver/mysql(-d跳过构建和 require 写入)
注意:Go 1.21+ 开始,go get 不再默认构建或安装命令,仅管理依赖;若需安装二进制,改用 go install。
使用 go install 安装可执行工具
go install 用于构建并安装带有 main 函数的包(即 CLI 工具),它不修改当前模块的 go.mod,而是从远程拉取源码、编译、放入 $GOBIN(默认为 $GOPATH/bin)。
-
安装最新版命令:
go install golang.org/x/tools/cmd/goimports@latest -
安装特定版本命令:
go install github.com/cosmtrek/air@v1.47.1 -
确保 $GOBIN 在 PATH 中,否则安装后命令不可用:
export PATH=$GOBIN:$PATH(Linux/macOS)或对应添加到系统环境变量(Windows)
清理与验证依赖
日常维护建议定期执行:
-
下载缺失依赖:
go mod download -
删除未使用的依赖:
go mod tidy(自动增删go.mod中的 require) -
升级所有依赖到最新兼容版:
go get -u(慎用,可能引入不兼容变更) -
检查依赖漏洞:
go list -m -u all或go vulncheck ./...(Go 1.18+)
不复杂但容易忽略。










