什么是$GOPATH[i]和$GOPATH[d]?

Go 模块参考的一节描述了一些最小模块兼容性的规则。本节中有一个条件列表,其中两个如下所示:

  • 不存在目录(对于任何根目录),$GOPATH[i]/src/$modpath/$vn/$suffix$GOPATH[i]

  • 该文件存在(对于某些根目录),并将模块路径声明为 ,$GOPATH[d]/src/$modpath/go.mod$GOPATH[d]$modpath/$vn

在这种情况下,什么是 和 ?(假设我们知道什么是。$GOPATH[i]$GOPATH[d]$GOPATH


慕的地6264312
浏览 102回答 1
1回答

慕无忌1623718

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

相关分类

Go