我想为 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中,我得到了类型的默认值。在这种情况下,将int初始化为0。 我有一个问题,其中对我来说int中的0可以是一个有效值,因此我需要检查它是由我设置还是被初始化。有什么办法可以告诉他们之间的区别吗? 考虑下面的代码 …我需要能够区分和之间的区别,但是它们看起来一样! 问题答案: 您无法分辨出差异,无法跟踪是否设置了字段(或变量)。 使用指针 您可以使用 值为零的指针,因此,如果未设置
问题内容: 我对结构字段有疑问。 我已经创建了一个类与一种方法即增加或减少对象变量通过。另一种方法用于输出结果。 在一个新的实例与默认创建和,然后我打电话和。我希望在期间更改的值并产生,但它显示的是: 我的代码有什么问题? 问题答案: 您需要在此处使用指针,否则每次都仅更改原始对象的副本。一切都通过价值传递。
问题内容: 我在设置Avro字段的默认值时遇到了一些问题。我有一个简单的架构,如下所示: data.avsc: 我正在使用 avro-maven-plugin v1.7.6 生成Java模型。 当我使用:创建模型的实例时 ,它会失败并出现以下异常: org.apache.avro.AvroRuntimeException:org.apache.avro.AvroRuntimeException:字
我在设置Avro字段的默认值时遇到了一些问题。我有一个简单的模式,如下所示: 数据avsc: 我使用的是avro maven插件v1。7.6生成Java模型。 当我使用:创建模型的实例时,它会失败,但有一个异常: org.apache.avro.AvroRuntimeExc0019:org.apache.avro.AvroRuntimeExc0019:字段id类型: UNION pos: 0未设置
运行以下代码时,k的值为0: Jdk 1.8_181 这是我的comlier错误还是jvm错误?我找不到答案
问题内容: 我正在使用以下方法在ES中创建动态映射: 因此,每当我为具有字段()的文档建立索引时,它都会自动创建具有类型的字段()。因此,每当没有a时,我都会发送一个空字符串,然后引发异常。 有什么办法可以解决这个问题?我可以指定默认值吗? 问题答案: 您可以添加到所有字段,也可以全局设置: 仅字段: 全局设置 :