不同版本的原型文件

Different versions of proto files

我有一个这样的原型:

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
}

现在我必须向它添加另一个字段,所以它看起来像这样:

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
  optional string phone = 4;
}

如果我现在反序列化使用旧版本序列化的 Persons,唯一的区别是 hasPhone() 将始终为 false 吗?因此,假设将为所有新人设置 phone 我实际上可以区分它是否是 hasPhone 的原型 old/new 版本 true/false?

是的,没错。

您还可以使用 getPhone() 并检查字符串是否为空,因为空字符串是字符串类型字段的默认值。