代码之家  ›  专栏  ›  技术社区  ›  ik1ne

golang开源存储库开发的最佳本地结构是什么?

go
  •  0
  • ik1ne  · 技术社区  · 7 年前

    我正在调试以太坊的Go实现( link ),因为我的核心兴趣是开发新的一致性算法(即修改github的开源Go代码)。

    然而,我对源代码的位置/路径有问题。当我把文件夹(即。 go-ethereum )外面 $GOPATH 然后尝试编译&调试 geth ( go-ethereum/cmd/geth/main.go )它显示以下错误: Use of internal package is not allowed.

    从那个错误消息中,我发现导入 github.com/ethereum/go-ethereum 不是导入我的源代码,而是从互联网上获取代码(和其他库一样)。当然,当我试图修改 github。com/ethereum/go ethereum 包裹代码。

    所以,我的解决办法是将源代码克隆到 $GOPATH/src/github.com/ethereum/go-ethereum 接着 this answer ,Goland IDE开始编译;调试没有错误(无法 go build ./cmd/geth/main.go 虽然是因为错误 undefined: configFileFlag... )

    因此,现在我有了一个工作的调试器,可以通过修改源代码进行调试,但这看起来不像理想的源代码结构。

    问题是:

    把源代码放进去 $GOPATH (由于内部原因)正确的方法?如果是这样,如果我使用 去以太坊 来自另一个项目的包?(幸运的是我没有,但我很好奇)我必须隐藏&还原我对代码所做的更改?

    1 回复  |  直到 6 年前
        1
  •  0
  •   eugenioy    7 年前

    是的,你最终得到的文件夹结构是正确的。

    代码应该在 $GOPATH/src 正如你所描述的。

    但请注意 $GOPATH 不是系统中的固定文件夹,您可以在不同文件夹下有多个项目,并更改 $GOPATH 相应地,这取决于您正在使用什么(或打开多个控制台终端,每个终端都有自己的控制台) $GOPATH 价值)。