假设我决定按如下方式组织所有个人开发的包:
$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。)
拉莫斯之舞
相关分类