采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,你好!
问题如截图中所示,麻烦及时答疑解惑下,谢谢!
另外下面的 repeated Content contents = 2;这种写法,为什么不单独写成 Content contents = 2就好了,而是要加一个 repeated 是起什么作用呢? 不太理解,麻烦答疑下,谢谢!
message FindContentRsp { // 内容总数 int64 total = 1; // 内容 repeated Content contents = 2; }
同学你好,你关注的这个问题非常好哈,这是proto协议的规则。
Content 是字段的名称,表示该字段在消息中的含义。
= 1 是字段的序列号(tag),用于唯一标识该字段。序列号在消息的二进制表示中起着重要作用。
唯一标识:每个字段都有一个唯一的序列号,用于在序列化和反序列化过程中识别字段。序列号在消息的二进制格式中是必需的,因为它们用于标识字段,而不是字段名称。
版本兼容性:使用序列号可以在不破坏向后兼容性的情况下对消息进行版本控制。你可以添加、删除或重命名字段,而只要保持序列号不变,旧版本的代码仍然可以正确解析新版本的消息。
3. 序列化效率:在序列化过程中,protobuf 使用序列号而不是字段名称来减少消息的大小,从而提高传输效率。
序列号在 protobuf 中是非常重要的,它们确保了消息的结构在序列化和反序列化过程中的一致性和效率。通过使用序列号,protobuf 能够在不同版本之间保持兼容性,并有效地传输数据。repeated :在 Protocol Buffers(protobuf)中,repeated 关键字用于定义一个字段可以包含零个或多个值。这意味着该字段可以是一个数组或列表,允许存储多个相同类型的元素。
感谢老师及时回复! //查找内容请求 message FindContentReq { // 内容ID int64 id = 1; // 作者 string author = 2; // 标题 string title = 3; // 页 int32 page = 4; // 页大小 int32 page_size = 5; } 根据您上面的回复,是不是说这个message中的字段,只要给字的序列号值不相同就可以了,是这个意思吗? message UpdateContentReq { // 内容 Content content = 1; } 这种写法,是指UpdateContentReq 中包括当前Content中定义的所有属性字段吗?
登录后可查看更多问答,登录/注册
核心语法+微服务化+分布式加工流+立体化监控 带你实战内容库系统
183 6
45 3
85 3
81 2
116 2