当我启用gomodules并构建我的go程序时,将下载所需的软件包。

但是我在$GOPATH/src/$GOPATH/src/mod中找不到它们。

它们存储在哪里?

对于Go 1.11,它们存储在

模块缓存存储在$GOPATH/pkg/mod中,如果未设置$GOPATH,则存储在$HOME/go/pkg/mod中。

注意:通常,模块缓存是只读的,旨在用作不可变缓存。因此,永远不要尝试在此处编辑内容,也不要从缓存内部运行go命令。

模块缓存包含zip文件,解压缩的模块源代码以及VCS缓存(不使用代理时)。缓存通常包含单个依赖项的多个版本。

如果要检查模块缓存中依赖项的代码,一种捷径是可以通过以下方式直接cd到解压缩的依赖项的位置:

这将要求go list报告模块缓存中模块github.com/foo/bar的目录位置,默认为当前在当前模块中使用的任何版本。

给定高速缓存旨在是不可变的,一个相关的问题是如何编辑依赖项(例如,如果要添加调试日志,或者准备发送依赖项的上游修订)。这时的常见解决方案是使用gohack,它会创建依赖项的可变副本(默认情况下在$HOME/gohack中,但位置由$GOHACK变量控制)。 gohack还将您当前的go.mod文件设置为具有替换指令以指向该可变副本。

我在Macos 10.13.6上,使用go1.11 darwin/amd64,并且echo $GOPATH为空。

我在$HOME/go/pkg/mod中找到了我的模块

如果要清理缓存,请使用命令go clean --modcache

如果您只需要更新一些依赖项,则可能要从中清除有关此依赖项的信息

  • go.mod
  • 求和
  • vendor / modules.txt