为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕的地6264312 2022-08-09 20:41:41
Go 模块参考的一节描述了一些最小模块兼容性的规则。本节中有一个条件列表,其中两个如下所示:不存在目录(对于任何根目录),$GOPATH[i]/src/$modpath/$vn/$suffix$GOPATH[i]该文件存在(对于某些根目录),并将模块路径声明为 ,$GOPATH[d]/src/$modpath/go.mod$GOPATH[d]$modpath/$vn在这种情况下,什么是 和 ?(假设我们知道什么是。$GOPATH[i]$GOPATH[d]$GOPATH
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

如命令的文档所述:go

GOPATH 环境变量列出了查找 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

如果我在这两个目录中都有一个包,那么它将用于解析依赖关系。


查看完整回答
反对 回复 2022-08-09
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信