最近我开始学习以太坊,这是我第一次使用golang。 C ++是我的主要语言,但由于以太坊项目中的变量名称而使我有些困惑。
core / state / managed_state.go:25:type帐户结构{
core / state / state_object.go:98:type帐户结构{
状态包中同时存在“帐户”和“帐户”类型,这看起来很奇怪。
我检查了Naming convention for similar Golang variables,它看起来仍然很糟糕。
我发现他们在不同的程序包中使用了很多“ Node”结构。当然,它们确实具有不同的目的和结构。
这类命名在golang中是惯例并且很流行吗? 如果您对golang中的命名约定有充分的参考(例如,开源项目或书籍),请为其中的一些命名?会非常感激。
答案 0 :(得分:2)
状态包中同时存在“帐户”和“帐户”类型,这看起来很奇怪。
在语言规范中,这两个名称之间存在有意义的区别。
可以导出一个标识符以允许从另一个标识符访问它 包。如果同时满足以下条件,则导出标识符:
- 标识符名称的第一个字符是Unicode大写 字母(Unicode类“ Lu”);和
- 标识符在 包块,或者它是字段名称或方法名称。
所有其他标识符都不会导出。
因此,仔细看一下以太坊代码库,这是我的观察结果:
当您查看the generated documentation时,我认为实现选择更为合理。
特别是Account type is front and center,详细介绍了包装使用者所感兴趣的数据结构。
当您查看the documentation for the ManageState struct时,有意未记录未导出的字段。这是因为它们是内部细节,不会影响导出的界面,并且可以轻松更改而不会影响软件包的用户。
关于命名建议,请参见Names section in Effective Go。