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

时间:2019-07-16 01:43:27

标签: go

当前,我正在尝试调试以太坊(link)的golang实现,因为我的核心兴趣是开发新的共识算法(即,修改来自github的开源Golang代码)。

但是,我在源代码的位置/路径上遇到了问题。当我将文件夹(即go-ethereum)放在$GOPATH之外,然后尝试编译和调试gethgo-ethereum/cmd/geth/main.go)时,显示以下错误:Use of internal package is not allowed. < / p>

从该错误消息中,我发现导入github.com/ethereum/go-ethereum并不是在导入我的源,而是从互联网(如其他库)获取代码。当然,当我尝试修改github.com/ethereum/go-ethereum程序包代码时,绝对不应该这样做。

因此,我的解决方法是将源代码克隆到$GOPATH/src/github.com/ethereum/go-ethereum中,然后跟随this answer,然后Goland IDE开始编译和调试而没有错误(尽管由于错误{ {1}})

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

问题是:

是否由于内部原因而将源代码放入go build ./cmd/geth/main.go中?如果是这样,如果我正在使用另一个项目中的undefined: configFileFlag...包怎么办?(幸运的是我没有,但是我很好奇)我是否必须存储并还原对代码所做的更改?

1 个答案:

答案 0 :(得分:0)

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

您所描述的代码应位于$GOPATH/src下。

但是请注意,$GOPATH不是系统中的固定文件夹,您可以在不同的文件夹下拥有多个项目,并根据要处理的内容相应地更改$GOPATH的值(或具有多个控制台)终端打开,每个终端都有自己的$GOPATH值。