go get用于下载并安装依赖库,更新go.mod;go install用于构建并安装可执行命令到$GOBIN。二者用途不同,不可混用,Go 1.18+后go get不再隐式安装命令。
在 Go 中安装第三方库主要通过 go get 命令完成,go install 则用于安装可执行命令(即带有 mai 函数的程序)。两者用途不同,不能混用。
n
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
go get github.com/gorilla/mux@v1.8.5
go get 会自动写入 go.mod 和 go.sum;若未启用,建议先运行 go mod init your-module-name
go install 从远程仓库下载指定包,并仅构建其中的 main 包,将生成的二进制文件放入 $GOBIN(默认为 $GOPATH/bin),供终端直接调用。它不会影响当前项目的 go.mod。
golang.org/x/tools/cmd/goimports):go install golang.org/x/tools/cmd/goimports@latest
@latest 或 @v0.12.0
$GOBIN 在系统 PATH 中,否则无法在终端直接运行该命令Go 1.18+ 默认使用模块模式,且 go get 不再支持隐式安装可执行文件(即不再等价于旧版 go install)。以下操作容易出错:
立即学习“go语言免费学习笔记(深入)”;
go get golang.org/x/tools/cmd/gopls 在新版本中只会下载源码,不会生成可执行文件,应改用 go install
@version 可能拉取 master 分支(已弃用),推荐显式指定 @latest 或语义化版本go env -w GOPROXY=https://goproxy.cn,direct
检查依赖是否写入模块:go list -m all | grep package-name
检查命令是否可用:which goimports 或 goimports -h
查看已安装的命令列表:ls $GOBIN(或 go env GOBIN 确认路径)