$GOPATH[i] 和 $GOPATH[d] 是什么?
What is $GOPATH[i] and $GOPATH[d]?
Go 模块参考的 A section 描述了一些 最小模块兼容性 的规则。本节中有一个条件列表,其中两个如下所示:
- 不存在
$GOPATH[i]/src/$modpath/$vn/$suffix
目录(对于任何根 $GOPATH[i]
),
- 文件
$GOPATH[d]/src/$modpath/go.mod
存在(对于某些根 $GOPATH[d]
)并将模块路径声明为 $modpath/$vn
,
在此上下文中,$GOPATH[i]
和 $GOPATH[d]
是什么? (假设我们知道 $GOPATH
是什么。)
如 go
命令的文档所述:
The GOPATH environment variable lists places to look for Go code. On Unix, the value is a colon-separated string. On Windows, the value is a semicolon-separated string. On Plan 9, the value is a list.
If the environment variable is unset, GOPATH defaults to a subdirectory named "go" in the user's home directory ($HOME/go on Unix, %USERPROFILE%\go on Windows), unless that directory holds a Go distribution. Run "go env GOPATH" to see the current GOPATH.
因此,您引用的语法 $GOPATH[i]
仅用于描述 GOPATH 中的项目,正如我们所见,它可以是一个列表,而不仅仅是对单个路径的引用。
假设我的 Linux 机器上有以下 GOPATH
:/home/me/go:/gofaster
,并且我正在 /home/me/go/src/example.com/testing
.[=23= 中进行一个项目]
最小模块兼容性规则会这样说,即。为了解决我的依赖关系 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
的 none 中没有包,在 /gofaster/src/example.com/utils/v2
中也没有包(即检查两个路径)。
- 我有
/home/me/go/src/example.com/utils
或 /gofaster/src/example.com/utils
中的一个包(注意缺少 v2)。
如果我在这些目录中的任何一个中都有一个包,那么它用于解决依赖关系。
A section 描述了一些 最小模块兼容性 的规则。本节中有一个条件列表,其中两个如下所示:
- 不存在
$GOPATH[i]/src/$modpath/$vn/$suffix
目录(对于任何根$GOPATH[i]
), - 文件
$GOPATH[d]/src/$modpath/go.mod
存在(对于某些根$GOPATH[d]
)并将模块路径声明为$modpath/$vn
,
在此上下文中,$GOPATH[i]
和 $GOPATH[d]
是什么? (假设我们知道 $GOPATH
是什么。)
如 go
命令的文档所述:
The GOPATH environment variable lists places to look for Go code. On Unix, the value is a colon-separated string. On Windows, the value is a semicolon-separated string. On Plan 9, the value is a list.
If the environment variable is unset, GOPATH defaults to a subdirectory named "go" in the user's home directory ($HOME/go on Unix, %USERPROFILE%\go on Windows), unless that directory holds a Go distribution. Run "go env GOPATH" to see the current GOPATH.
因此,您引用的语法 $GOPATH[i]
仅用于描述 GOPATH 中的项目,正如我们所见,它可以是一个列表,而不仅仅是对单个路径的引用。
假设我的 Linux 机器上有以下 GOPATH
:/home/me/go:/gofaster
,并且我正在 /home/me/go/src/example.com/testing
.[=23= 中进行一个项目]
最小模块兼容性规则会这样说,即。为了解决我的依赖关系 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
的 none 中没有包,在/gofaster/src/example.com/utils/v2
中也没有包(即检查两个路径)。 - 我有
/home/me/go/src/example.com/utils
或/gofaster/src/example.com/utils
中的一个包(注意缺少 v2)。
如果我在这些目录中的任何一个中都有一个包,那么它用于解决依赖关系。