Go模块参考的一节描述了一些最小模块兼容性的规则。在本节中有一个条件列表,其中两个如下所示:
$GOPATH[i]/src/$modpath/$vn/$suffix目录(对于任何根$GOPATH[i]),$GOPATH[d]/src/$modpath/go.mod存在(对于某些根$GOPATH[d]),并将模块路径声明为$modpath/$vn,在这种情况下,$GOPATH[i]和$GOPATH[d]是什么?(假设我们知道$GOPATH是什么。)
发布于 2021-02-22 14:25:21
正如go命令的文档中所述:
GOPATH环境变量列出查找Go代码的位置。在Unix上,该值是一个冒号分隔的字符串.在Windows上,该值是分号分隔的字符串.在计划9中,值是一个列表。 如果未设置环境变量,则GOPATH默认为用户主目录中的一个名为" Go“的子目录($ home /go on Unix,%USERPROFILE%\go on Windows),除非该目录包含Go分发版。运行"go env GOPATH“以查看当前GOPATH。
因此,您引用的语法$GOPATH[i]只是用来描述GOPATH中的一个项,正如我们所看到的,它可以是一个列表,而不仅仅是对单个路径的引用。
让我们假设我的Linux机器上有以下GOPATH:/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的包裹。检查两条腿)。/home/me/go/src/example.com/utils或/gofaster/src/example.com/utils中有一个包(注意缺少v2)。如果我在这些目录中都有一个包,那么它将用于解决依赖关系。
https://stackoverflow.com/questions/66305978
复制相似问题