不为我自己的包使用回购路径的影响

Implications of not using repo path for my own packages

假设我决定将所有个人开发的包组织起来 如下:

$GOPATH/
    bin/
    pkg/
    src/
        somepkg1
        somepkg2
        ...
        somepkgN

此外,假设它们之间有大量的代码重用,所以我 决定将整个 $GOPATH 工作区保持在相同的 Git 存储库(每个包都可以是一个子模块),而不是更多 子包不太连贯的传统场景(共存 完全是因为在同一个工作空间中使用 go get):

$GOPATH/
    bin/
    pkg/
    src/github.com/<me>/
        somepkg1
        somepkg2
        ...
        somepkgN

我可以看到使用前一种方法(不使用 github.com/<me>/ 在包路径中),go get 将无法获取包作为 它们 "declaring" 本身无法在线获取。然而, 通过使用 git 子模块可以很容易地解决这个问题,所以所有 包将首先被获取(注意它是一个紧密的 受控的生态系统,因此不会有名称冲突)。

除了go get之外,是否还有其他不使用完整的限制? 包的路径?

(我主要担心某些代码引起的限制 refactoring/analysis 利用 repository path as base path convention 的工具 允许 go get 在线查找包。)

对于 Go 编译器和除 go get 之外的所有 go 工具元素,包导入路径是包含导入路径的几乎不透明的字符串。您可以按照自己的意愿布置代码(编译器本身很乐意将不同文件夹中的文件编译到一个包中)。如果您不需要或不希望您的代码 go getable 则无需使用回购路径。 golang 中的分析和重构工具。org/x/tools 在不透明的导入路径上工作(据我所知)并且不访问网络。