.proto文件的字段可以从零开始吗?

褪色的蜜蜂

.proto示例似乎都开始将其字段编号为1。

例如https://developers.google.com/protocol-buffers/docs/proto#simple

message SearchRequest {
  required string query = 1;
  optional int32 page_number = 2;
  optional int32 result_per_page = 3;
}

如果可以使用零,它将使某些消息小一个或多个字节(即,一个或多个字段编号为16的字节)。

由于键只是(fieldnum << 3 | fieldtype)的varint编码,我无法立即了解为什么不应该使用零。

是否有理由不将字段编号从零开始?

pa

一个非常直接的原因是:零字段号被拒绝protoc

test.proto:2:28: Field numbers must be positive integers.

至于为什么协议缓冲区是这样设计的,我只能猜测。一个很好的结果是,将检测到一个全零的消息为无效消息。它还可以在内部将“无字段”指示为协议缓冲区实现中的返回值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从零开始的MoCa

来自分类Dev

从零开始的Linux

来自分类Dev

AutoHotkey能够以从零开始的顺序定义数组吗?

来自分类Dev

AutoHotkey能够以从零开始的顺序定义数组吗?

来自分类Dev

我在哪里可以从零开始学习算法?

来自分类Dev

从零开始的ArUco程序

来自分类Dev

从零开始实现`Stack`

来自分类Dev

从Python到C#。从零开始?

来自分类Dev

从零开始的Lua / C ++绑定

来自分类Dev

使用awk打印从零开始的行号

来自分类Dev

从零开始证明Coq的强烈归纳

来自分类Dev

如何从零开始训练gpt 2?

来自分类Dev

从零开始的模型或微调或转移倾斜

来自分类Dev

从零开始的Symfony2应用

来自分类Dev

从零开始的Lua / C ++绑定

来自分类Dev

从零开始构建IP语音

来自分类Dev

Linux从零开始在LXC容器中

来自分类Dev

Android Sqlite 结果从零开始

来自分类Dev

如何从零开始创建base64文件?

来自分类Dev

Excel将月份从零开始的数字格式更改为日期,这是一个奇怪的错误吗?

来自分类Dev

Excel将月份从零开始的数字格式更改为日期,这是一个奇怪的错误吗?

来自分类Dev

动画计数器从零开始用逗号

来自分类Dev

为什么MediaPlayer.start不从零开始播放?

来自分类Dev

MPAndroidChart / CombinedChart-条形总是从零开始

来自分类Dev

从零开始的基本文本框

来自分类Dev

每月减一(不是因为它从零开始)

来自分类Dev

从零开始基于令牌的WebAPI理论

来自分类Dev

将numpy数组更改为从零开始

来自分类Dev

GraphView总是从零开始,并且动态地