结构字段不是强制性的吗?
Are struct fields not mandatory?
我正在学习围棋,遇到了这样的事情:
type Something struct {
someField String
}
然后初始化为:Something{}
我的理解是我们需要用其中的字段初始化结构,但这是编译和工作,所以有人能解释一下为什么这样吗?
Elements/fields 如@icza 所说,是可选的。
如果未提供,它们将具有适用于 element/field 类型的零值。例如,在 int
中,“零值”将是 0
.
非常感谢@icza 和@Sergio Tulentsev 的评论,基本上就是答案。
Go 没有 undefined 的概念。每种数据类型都有一个 零值。
- https://dave.cheney.net/2013/01/19/what-is-the-zero-value-and-why-is-it-useful
- https://go.dev/tour/basics/12
任何未显式初始化的 variable/field/property 默认情况下使用其数据类型的零值进行初始化。
这是否是好事尚有争议[1],但它是 Go Way™。
[1] 例如,如果我正在测量电压,零伏的测量值与根本没有电压测量值是不同的。或者,如果我将调查回复制成表格,没有回复与“未知”/“不知道”/“其他”的回复不同。
我正在学习围棋,遇到了这样的事情:
type Something struct {
someField String
}
然后初始化为:Something{}
我的理解是我们需要用其中的字段初始化结构,但这是编译和工作,所以有人能解释一下为什么这样吗?
Elements/fields 如@icza 所说,是可选的。
如果未提供,它们将具有适用于 element/field 类型的零值。例如,在 int
中,“零值”将是 0
.
非常感谢@icza 和@Sergio Tulentsev 的评论,基本上就是答案。
Go 没有 undefined 的概念。每种数据类型都有一个 零值。
- https://dave.cheney.net/2013/01/19/what-is-the-zero-value-and-why-is-it-useful
- https://go.dev/tour/basics/12
任何未显式初始化的 variable/field/property 默认情况下使用其数据类型的零值进行初始化。
这是否是好事尚有争议[1],但它是 Go Way™。
[1] 例如,如果我正在测量电压,零伏的测量值与根本没有电压测量值是不同的。或者,如果我将调查回复制成表格,没有回复与“未知”/“不知道”/“其他”的回复不同。