假设我决定按如下方式组织所有个人开发的包:
$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
约定。)go get