英文:
Assign default value for struct field
问题
我想在Go语言中为结构体字段分配默认值。我不确定是否可能,但是在创建/初始化结构体对象时,如果我没有为字段分配任何值,我希望它从默认值中分配。有什么办法可以实现吗?
type abc struct {
prop1 int
prop2 int // 默认值: 0
}
obj := abc{prop1: 5}
// 这里我希望 obj.prop2 的值为 0
你可以在定义结构体时为字段指定默认值。在这种情况下,如果在创建结构体对象时没有为字段赋值,它们将被自动初始化为默认值。在你的例子中,prop2
的默认值已经是 0,所以你不需要额外的代码来实现这个需求。当你创建 obj
对象时,prop2
的值将自动设置为 0。
英文:
I want to assign default value for struct field in Go. I am not sure if it is possible but while creating/initializing object of the struct, if I don't assign any value to the field, I want it to be assigned from default value. Any idea how to achieve it?
type abc struct {
prop1 int
prop2 int // default value: 0
}
obj := abc{prop1: 5}
// here I want obj.prop2 to be 0
答案1
得分: 22
这是不可能的。你能做的最好的办法是使用构造函数方法:
type abc struct {
prop1 int
prop2 int // 默认值:0
}
func New(prop1 int) abc {
return abc{
prop1: prop1,
prop2: someDefaultValue,
}
}
但是请注意,Go语言中的所有值都会自动默认为它们的零值。int
类型的零值已经是0
了。所以如果你想要的默认值就是0
,你已经免费得到了它。只有当你想要某个类型的非零默认值时,才需要使用构造函数。
英文:
This is not possible. The best you can do is use a constructor method:
type abc struct {
prop1 int
prop2 int // default value: 0
}
func New(prop1 int) abc {
return abc{
prop1: prop1,
prop2: someDefaultValue,
}
}
But also note that all values in Go automatically default to their zero value. The zero value for an int
is already 0
. So if the default value you want is literally 0
, you already get that for free. You only need a constructor if you want some default value other than the zero value for a type.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论