当我启用gomodules并构建我的go程序时,将下载所需的包.
但我可以在$ GOPATH/src /或$ GOPATH/src/mod中找到它们.
它们存放在哪里?
export GO111MODULE=on
go mod init
go build main.go
go: finding github.com/sirupsen/logrus v1.0.6
go: downloading github.com/sirupsen/logrus v1.0.6
...
Run Code Online (Sandbox Code Playgroud)
pet*_*rSO 29
对于Go 1.11,它们存储在
$GOPATH/pkg/mod
Run Code Online (Sandbox Code Playgroud)
San*_*iew 14
在终端中运行它
go env GOMODCACHE
Run Code Online (Sandbox Code Playgroud)
go env - 打印所有 Go 环境信息
go env NAME - 打印特定的环境变量。
小智 10
要确定缓存位置,您可以使用 go env:
go env|grep CACHE
Run Code Online (Sandbox Code Playgroud)
要清除缓存,请使用go clean -modcache或 ,go clean -cache具体取决于要清除的缓存类型。
我在 Macos 10.13.6 上,使用go1.11 darwin/amd64andecho $GOPATH为空。
我在中找到了我的模块$HOME/go/pkg/mod
模块缓存存储在 中$GOPATH/pkg/mod,或者$HOME/go/pkg/mod如果$GOPATH未设置。
注意:通常,模块缓存是只读的,旨在成为不可变缓存。因此,您永远不应该尝试在那里编辑内容,也不应该go从缓存内部运行命令。
模块缓存包含 zip 文件、解压缩的模块源代码以及 VCS 缓存(不使用代理时)。缓存通常包含单个依赖项的多个版本。
如果您想检查模块缓存中依赖项的代码,一种快捷方式是您可以cd通过以下方式直接到解压依赖项的位置:
cd $(go list -f '{{.Dir}}' -m github.com/foo/bar)
Run Code Online (Sandbox Code Playgroud)
这要求go list报告github.com/foo/bar模块缓存中模块的目录位置,默认为您当前在当前模块中使用的任何版本。
鉴于缓存是不可变的,一个相关的问题是如何编辑依赖项(例如,如果您想添加调试日志,或者可能为发送依赖项的上游修复做准备)。此时一个常见的解决方案是使用gohack,它创建依赖项的可变副本(默认情况下在 中$HOME/gohack,但位置由$GOHACK变量控制)。gohack还将您的当前go.mod文件设置为具有替换指令以指向该可变副本。