【问题标题】:What does "1", "2", "3" mean in protobuf?protobuf 中的“1”、“2”、“3”是什么意思?
【发布时间】:2012-01-26 12:44:13
【问题描述】:
package tutorial;

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

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

【问题讨论】:

    标签: protocol-buffers protobuf-net


    【解决方案1】:

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

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

    【讨论】:

    • 不能从声明中推断出字段编号吗?
    • @WilderField 通过显式编号,您可以按任意顺序对字段进行排序和组织,而不会影响生成的代码。这在重构时会很有用。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 2011-04-28
      • 2010-10-23
      • 1970-01-01
      相关资源
      最近更新 更多