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

Posted

技术标签:

【中文标题】protobuf 中的“1”、“2”、“3”是啥意思?【英文标题】: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”是什么意思?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

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

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

【讨论】:

以上是关于protobuf 中的“1”、“2”、“3”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

the hash for the file is not present in the specified catalog file,是啥意

轮文件:protobuf-3.4.0-py2.py3-none-any.whl 中的“none-any”是啥意思

在 protobuf 中处理可选消息的正确方法是啥?

java+p+=+new+JPanel(new+GridLayout(5,3,0,15));啥意?

Protobuf“字段1”的意义是啥?

linux protocol 2 是啥意思