【问题标题】:Assign default value for struct field [duplicate]为结构字段分配默认值[重复]
【发布时间】:2018-01-24 09:32:47
【问题描述】:

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

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

【问题讨论】:

    标签: go


    【解决方案1】:

    这是不可能的。你能做的最好的就是使用构造方法:

    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,那么您已经免费获得了它。如果您想要某个类型的零值以外的一些默认值,则只需要一个构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 2022-01-04
      • 2011-11-08
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多