gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:18:51 24 4
gpt4 key购买 nike

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

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

从该错误消息中,我发现 import 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 中(因为内部结构)是一种正确的方法吗?如果是这样,如果我使用的是来自另一个项目的 go-ethereum 包怎么办?(幸运的是我没有,但我很好奇)我是否必须存储和恢复我对代码所做的更改?

最佳答案

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

如您所描述的,代码应该在 $GOPATH/src 下。

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

关于go - Go 开源存储库开发的最佳本地结构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57049048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com