在golang中为struct字段分配默认值

时间:2017-08-16 09:43:22

标签: go

我想在golang中为struct字段指定默认值。我不确定是否可能,但在创建/初始化结构的对象时,如果我没有为该字段分配任何值,我希望它从默认值分配。知道如何实现吗?

type abc struct {
    prop1 int
    prop2 int  // default value: 0
}
obj := abc{prop1: 5}
// here I want obj.prop2 to be 0

1 个答案:

答案 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,那么您已经免费获得了该值。如果你想要一个默认值而不是类型的零值,你只需要一个构造函数。