在 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
。