使用未设置 GOPATH 的模块时,go 将导入放在哪里?

Where does go put imports when using modules with no GOPATH set?

我正在尝试将工作中的项目转换为模块。我的理解是它应该使部署更容易,因为不必正确设置 $GOPATH。

在我现有的项目中,我 运行 go mod init <project path>,并签入了 go.modgo.sum。作为测试,我打开了一个新终端,unset GOPATH,将我的项目克隆到 /tmp,go build,一切都很好,但它给我留下了疑问。我希望将我的导入内容下载到供应商文件夹中,但什么也没有。

当没有设置 $GOPATH 时,go modules 将它必须 go get 的包放在哪里?

来自modules help

When using modules, GOPATH is no longer used for resolving imports. However, it is still used to store downloaded source code (in GOPATH/pkg/mod) and compiled commands (in GOPATH/bin).

因此在您的情况下,如果未设置 GOPATH,它将使用默认的 GOPATH ($HOME/go/),从而将缓存的导入存储在:$HOME/go/pkg/mod