Protocol buffers 如何在协议缓冲区中指定默认值?
我可以给出上面提到的默认值吗?更新:下面的答案仅适用于proto2,proto3不允许自定义默认值 是的,您可以按照编写的那样提供默认值<代码>默认值对于<代码>必填项是可选的,但是对于<代码>可选项,您必须提及Protocol buffers 如何在协议缓冲区中指定默认值?,protocol-buffers,Protocol Buffers,我可以给出上面提到的默认值吗?更新:下面的答案仅适用于proto2,proto3不允许自定义默认值 是的,您可以按照编写的那样提供默认值默认值对于必填项是可选的,但是对于可选项,您必须提及默认值值,否则会自动指定特定于类型的值。此外,您忘了提到Empid的类型 protobuf语言指南指出 如果未为可选元素指定默认值,则 改为使用特定于类型的默认值:对于字符串,默认值为 值是空字符串。对于bools,默认值为false。对于 数字类型,默认值为零。对于枚举,默认值 是枚举的类型定义中列出的第一个
默认值
值,否则会自动指定特定于类型的值。此外,您忘了提到Empid
的类型
protobuf语言指南指出
如果未为可选元素指定默认值,则
改为使用特定于类型的默认值:对于字符串
,默认值为
值是空字符串。对于bool
s,默认值为false。对于
数字类型,默认值为零。对于枚举
,默认值
是枚举的类型定义中列出的第一个值。这意味着
向枚举开头添加值时必须小心
值列表
对于proto3
,不允许自定义默认值。为了澄清,我似乎无法为字符串设置不同的默认值。所以这仍然是不可能的。它们总是默认为空字符串?我想你错过了一个代码>在Empid
字段:)的末尾,若我想要自定义默认值,我应该怎么做?@ch271828n,一个选项可以是使用proto2。另一种可能是编写自定义加载项。
message Person {
required Empid = 1 [default = 100];
required string name = 2 [default = "Raju"];
optional string occupation = 3;
repeated string snippets = 4;
}