结构字段不是强制性的吗?

Are struct fields not mandatory?

我正在学习围棋,遇到了这样的事情:

type Something struct {
someField         String
}

然后初始化为:Something{}

我的理解是我们需要用其中的字段初始化结构,但这是编译和工作,所以有人能解释一下为什么这样吗?

Elements/fields 如@icza 所说,是可选的。 如果未提供,它们将具有适用于 element/field 类型的零值。例如,在 int 中,“零值”将是 0.

非常感谢@icza 和@Sergio Tulentsev 的评论,基本上就是答案。

Go 没有 undefined 的概念。每种数据类型都有一个 零值

任何未显式初始化的 variable/field/property 默认情况下使用其数据类型的零值进行初始化。

这是否是好事尚有争议[1],但它是 Go Way™。

[1] 例如,如果我正在测量电压,零伏的测量值与根本没有电压测量值是不同的。或者,如果我将调查回复制成表格,没有回复与“未知”/“不知道”/“其他”的回复不同。