go - $GOPATH[i] 和 $GOPATH[d] 是什么?
问题描述
Go Modules Reference的一部分描述了一些最小模块兼容性的规则。本节中有一个条件列表,其中两个如下所示:
- 不
$GOPATH[i]/src/$modpath/$vn/$suffix
存在目录(对于任何 root$GOPATH[i]
), - 该文件
$GOPATH[d]/src/$modpath/go.mod
存在(对于某些 root$GOPATH[d]
)并将模块路径声明为$modpath/$vn
,
在这种情况下,什么是$GOPATH[i]
和$GOPATH[d]
?(假设我们知道是什么$GOPATH
。)
解决方案
如命令文档中所述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)。
如果我在这些目录中的任何一个中有一个包,那么它用于解决依赖关系。
推荐阅读
- javascript - How to receive select value in handlesubmit function with formik react js?
- ios - _UIKeyboardBasedNonEditableTextSelectionGestureCluster oneFingerForcePress: Crash in swift
- php - android:结合android app和wordpress(登录功能)
- facebook-javascript-sdk - 在 FB 上分享从 html canvas 生成的图像
- xamarin - 来自 NSAttributedString 的 Xamarin NSTextStorage
- node.js - 我在节点 js 的单个函数中处理多个 socket-io 实例事件时遇到问题
- javascript - 如何在按钮单击时在 EXTJS 中添加字段集
- ios - RSA 加密仅在运行 iOS 9 的 iPhone 4s 上失败
- java - 获取接口“FloatingPoint”的名称,而不是扩展的类名“DataTypeA”
- javascript - 什么是 PHP trait 的 nodejs 等价物