假设我决定按如下方式组织所有个人开发的包:$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。)
1 回答
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
对于 Go 编译器和 go 工具的所有元素,除了go get
包导入路径是包含导入路径的几乎不透明的字符串。您可以随意布置代码(编译器本身很乐意将不同文件夹中的文件编译到一个包中)。如果您不需要或希望您的代码go get
能够使用,则无需使用 repo 路径。golang.org/x/tools 中的分析和重构工具在不透明的导入路径上工作(据我所知)并且不访问网络。
- 1 回答
- 0 关注
- 120 浏览
添加回答
举报
0/150
提交
取消