我试图在 intellij 中设置 GO 模块,并尝试在 GOPATH 下导入包。当我使用 Go Modules 时,它似乎没有从 GOPATH 中“导入”包。关于我可能做错了什么的任何想法?
下面是一个截图。左图:GoModules,它不识别包。右图:识别包的简单 GO 项目。
我尝试做同步包,没有运气。
转到版本 - 1.12.3
我试图在 intellij 中设置 GO 模块,并尝试在 GOPATH 下导入包。当我使用 Go Modules 时,它似乎没有从 GOPATH 中“导入”包。关于我可能做错了什么的任何想法?
下面是一个截图。左图:GoModules,它不识别包。右图:识别包的简单 GO 项目。
我尝试做同步包,没有运气。
转到版本 - 1.12.3
两种支持的模式(“GOPATH 模式”和“模块感知模式”)是互斥模式。这意味着你不能同时拥有这两者,你不能混合使用模块和 GOPATH。
使用模块时,GOPATH 不再用于解析导入。但是,它仍然用于存储下载的源代码(在 GOPATH/pkg/mod 中)和编译的命令(在 GOPATH/bin 中)。
对于更细粒度的控制,Go 1.11 中的模块支持尊重一个临时环境变量 GO111MODULE,它可以设置为三个字符串值之一:off、on 或 auto(默认值)。如果 GO111MODULE=off,那么 go 命令永远不会使用新的模块支持。相反,它会在供应商目录和 GOPATH 中查找依赖项;我们现在将其称为“GOPATH 模式”。如果 GO111MODULE=on,那么 go 命令需要使用模块,从不咨询 GOPATH。我们将此称为模块感知或以“模块感知模式”运行的命令。如果 GO111MODULE=auto 或未设置,则 go 命令根据当前目录启用或禁用模块支持。仅当当前目录位于 GOPATH/src 之外并且本身包含 go.mod 文件或位于包含 go 的目录之下时,才启用模块支持。
在模块感知模式下,GOPATH 不再定义构建期间导入的含义,但它仍然存储下载的依赖项(在 GOPATH/pkg/mod 中)和安装的命令(在 GOPATH/bin 中,除非设置了 GOBIN)。
如果您希望使用位于磁盘上的软件包,请参阅如何在另一个模块中使用“GOPATH”之外的模块?