我想在golang
中为struct字段指定默认值。我不确定是否可能,但在创建/初始化结构的对象时,如果我没有为该字段分配任何值,我希望它从默认值分配。知道如何实现吗?
type abc struct {
prop1 int
prop2 int // default value: 0
}
obj := abc{prop1: 5}
// here I want obj.prop2 to be 0
答案 0 :(得分:11)
这是不可能的。您可以做的最好是使用构造函数方法:
type abc struct {
prop1 int
prop2 int // default value: 0
}
func New(prop1 int) abc {
return abc{
prop1: prop1,
prop2: someDefaultValue,
}
}
但请注意,Go 中的所有值自动默认为零值。 int
的零值已经为0
。因此,如果您想要的默认值是字面0
,那么您已经免费获得了该值。如果你想要一个默认值而不是类型的零值,你只需要一个构造函数。