go - 为结构字段分配默认值

标签 go

<分区>

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

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

最佳答案

这是不可能的。您能做的最好的事情就是使用构造函数方法:

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

关于go - 为结构字段分配默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710188/

相关文章:

datetime - 将 UTC 字符串转换为时间对象

error-handling - 如果将所有错误都改为包含文件名、函数名和行号的样式,会出现什么潜在问题吗?

go - 如何通过标准输入将 []byte 传递给外部 exiftool?

arrays - 如何在内存中布局结构数组?

regex - 使用正则表达式替换将文本添加到多行字符串的每一行的开头

go - 如何计算 Go 的迭代次数?

json - 结构中的 json 标记真的需要编码吗?

go - 如何制作反向代理?

templates - Golang 分页

Gorilla session 存储在 localStorage 中