Protocol buffers 如何在协议缓冲区中指定默认值?

Protocol buffers 如何在协议缓冲区中指定默认值?,protocol-buffers,Protocol Buffers,我可以给出上面提到的默认值吗?更新:下面的答案仅适用于proto2,proto3不允许自定义默认值 是的,您可以按照编写的那样提供默认值默认值对于必填项是可选的,但是对于可选项,您必须提及默认值值,否则会自动指定特定于类型的值。此外,您忘了提到Empid的类型 protobuf语言指南指出 如果未为可选元素指定默认值,则 改为使用特定于类型的默认值:对于字符串,默认值为 值是空字符串。对于bools,默认值为false。对于 数字类型,默认值为零。对于枚举,默认值 是枚举的类型定义中列出的第一个

我可以给出上面提到的默认值吗?

更新:下面的答案仅适用于proto2,proto3不允许自定义默认值

是的,您可以按照编写的那样提供默认值<代码>默认值对于<代码>必填项是可选的,但是对于<代码>可选项,您必须提及
默认值
值,否则会自动指定特定于类型的值。此外,您忘了提到
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;
}