猿问

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

假设我决定按如下方式组织所有个人开发的包:


$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。)


qq_笑_17
浏览 130回答 1
1回答

拉莫斯之舞

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

相关分类

Go
我要回答