不使用repo路径对我自己的包的影响

时间:2015-11-12 20:47:56

标签: go structure organization tradeoff

假设我决定保留所有个人开发的软件包 如下:

$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将无法获取包 他们并没有“宣布”自己在线提供。然而, 通过使用git子模块可以很容易地解决这个问题 首先会提取包(请注意它是紧密的 控制生态系统所以没有名字冲突。)

是否有任何其他限制(除了go get)不使用完整 包的路径?

(我主要关注某些代码产生的限制 利用repository path as base path convention的重构/分析工具 允许go get在线查找包。)

1 个答案:

答案 0 :(得分:2)

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