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”是啥意思