protobuf 中的“1”、“2”、“3”是什么意思?

why*_*why 5 protocol-buffers protobuf-net

package tutorial;

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
}
Run Code Online (Sandbox Code Playgroud)

“1”、“2”、“3”是什么意思?

小智 13

消息定义中的每个字段都有一个唯一的编号标签。这些标签用于标识消息二进制格式中的字段,一旦使用消息类型,就不应更改。

https://web.archive.org/web/20120321055631/http://code.google.com/intl/de-DE/apis/protocolbuffers/docs/proto.html

  • @WilderField 通过显式编号,您可以按任意顺序对字段进行排序和组织,而不会影响生成的代码。这在重构时会很有用。 (2认同)

Jon*_*eet 8

它们是字段编号 - 它们在连线表示中用于标识哪个字段与某个值关联。这意味着重命名字段并不是重大更改(就线路格式而言),并且名称本身不必序列化。