如命令文档中所述go
:
GOPATH 环境变量列出了查找 Go 代码的位置。在 Unix 上,该值是一个冒号分隔的字符串。在 Windows 上,该值是以分号分隔的字符串。在计划 9 中,值是一个列表。
如果未设置环境变量,则 GOPATH 默认为用户主目录中名为“go”的子目录(Unix 上为 $HOME/go,Windows 上为 %USERPROFILE%\go),除非该目录包含 Go 发行版。运行“go env GOPATH”查看当前的 GOPATH。
(资源)
因此,您引用的语法$GOPATH[i]
仅用于描述 GOPATH 中的项目,正如我们所见,它可以是一个列表,而不仅仅是对单个路径的引用。
假设我的GOPATH
Linux 机器上有以下内容:/home/me/go:/gofaster
,并且我正在处理/home/me/go/src/example.com/testing
.
最小模块兼容性规则会按顺序说明。为了解决我的依赖关系example.com/utils/v2
,Go 会检查:
- 我没有包
/home/me/go/src/example.com/testing/vendor/example.com/utils/v2
(即供应商目录)
- 我没有一个包
/home/me/go/src/example.com/utils/v2
,也没有/gofaster/src/example.com/utils/v2
(即检查两个 gopaths)。
- 我有一个
/home/me/go/src/example.com/utils
或其中一个包/gofaster/src/example.com/utils
(请注意缺少 v2)。
如果我在这些目录中的任何一个中有一个包,那么它用于解决依赖关系。