GO语言 go get 下载 下来的包存放在哪里
在 Go 中,通过 go get
(或 Go Modules 下的自动下载)获取的第三方包,具体存储位置取决于你是否启用了 Go Modules(推荐方式)。
✅ 1. 如果你使用了 Go Modules(Go 1.11+ 默认开启)
当前 Go 开发强烈建议使用模块管理(Go Modules)
第三方包存放路径:
$GOPATH/pkg/mod/
示例:
~/go/pkg/mod/github.com/gin-gonic/gin@v1.8.1/
- 下载的每个模块都以
模块名@版本号
形式存储 - 模块是 只读的,防止污染依赖
$GOPATH
默认为~/go
,除非你手动设置了GOPATH
查看 GOPATH:
go env GOPATH
✅ 2. 如果你没有启用 Go Modules(旧方式)
不推荐:老项目才用
$GOPATH/src/
模式
下载的包会被放到:
$GOPATH/src/
示例:
~/go/src/github.com/gin-gonic/gin/
你可以直接看到源码,但这依赖老式的包管理方式,不建议新项目使用。
✅ 快速总结
是否启用 Go Modules | 下载目录 | 示例路径 |
---|---|---|
✅ 是(默认) | $GOPATH/pkg/mod | ~/go/pkg/mod/github.com/foo/bar@v1.2.3/ |
❌ 否(老式 GOPATH) | $GOPATH/src | ~/go/src/github.com/foo/bar/ |
✅ 查看某个包的位置(直接命令)
go list -m -f '{{.Dir}}' github.com/gin-gonic/gin
输出示例:
/Users/yourname/go/pkg/mod/github.com/gin-gonic/gin@v1.8.1
如你不确定是否在使用 Go Modules,可以检查当前目录下是否有 go.mod
文件。
需要我教你如何管理依赖或清理旧包(类似 npm 的 npm prune
)也可以告诉我。
是的,Go 下载的第三方依赖包的存储位置是可以更改的,通过设置环境变量控制。下面分别说明如何更改这两个位置:
✅ 1. 更改 $GOPATH
(影响 pkg/mod
和旧式 src/
)
默认情况下:
$GOPATH 默认为 ~/go
你可以通过设置 GOPATH
来更改下载目录:
✅ Linux / macOS:
export GOPATH=/your/custom/path
你可以把它加进 ~/.bashrc
或 ~/.zshrc
中:
export GOPATH=$HOME/dev/go
✅ Windows (PowerShell):
$env:GOPATH = "D:\GoWorkspace"
或者设置系统环境变量。
更改后:
-
下载的依赖包将放在:
$GOPATH/pkg/mod/
-
你的项目默认也会找
$GOPATH/pkg/mod
作为模块缓存路径。
✅ 2. 更改 Go Module 缓存目录(不建议改,但可以)
如果你只想更改 Go Module 缓存位置,而不想影响整个 GOPATH,也可以设置:
GOMODCACHE
export GOMODCACHE=/your/custom/modcache
默认是:
$GOPATH/pkg/mod
设置后,模块缓存目录变为你自定义的位置。
✅ 3. 查看当前设置:
go env GOPATH
go env GOMODCACHE
✅ 示例:完整更改方式
export GOPATH=$HOME/my-go
export GOMODCACHE=$HOME/my-go-modcache
🚫 注意事项
- 不建议把 Go 模块缓存放在项目目录里,避免污染或版本冲突。
- 如果你修改了 GOPATH,请确保你在使用
go install
、go build
等时也在一个有效的 Go 项目内。
是否需要我为你生成一个包含自定义 GOPATH 的项目初始化脚本?比如自动设置环境变量和初始化 go.mod
。