假设我决定保留所有个人开发的软件包 如下:
$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
在线查找包。)
答案 0 :(得分:2)
对于Go编译器和除go get
以外的go工具的所有元素,包导入路径是包含导入路径的几乎不透明的字符串。您可以按照自己的意愿布置代码(编译器本身很乐意将来自不同文件夹的文件编译到一个包中)。如果您不需要或希望您的代码能够go get
,则无需使用repo路径。 golang.org/x/tools中的分析和重构工具在不透明的导入路径上工作(据我所知)并且不访问网络。