本文共 499 字,大约阅读时间需要 1 分钟。
required关键字
顾名思义,就是必须的意思,数据发送方和接收方都必须处理这个字段,不然还怎么通讯呢?
optional关键字
字面意思是可选的意思,但Protobuf处理时并非如此。实际上,Protobuf在optional字段前加了一个布尔变量,用来标记该字段是否有值。发送方在发送时,如果字段有值,就将布尔变量设为true,否则设为false。接收方在接收数据时,也会收到这个布尔变量,从而知道该字段是否有值。这就是optional的真正含义。
这种设计也被称为平滑升级,主要是为了保证与旧版本的兼容性。它类似于在传输数据时,发送对方的数组地址和数据长度信息一样,确保接收方能够正确解析数据。
repeated关键字
字面意思是重复的意思,但Protobuf中的repeated字段并非简单的重复。实际上,Protobuf在repeated字段前同样加了一个计数变量,用于标明字段的数量。发送方在发送时,会同时发送计数变量和字段的起始地址。接收方根据计数变量的值,能够正确解析对应的数据数量。
这种设计方式与传输数据时提供数组地址和数据长度的逻辑类似,确保接收方能够准确解析重复的数据项。
转载地址:http://erxfk.baihongyu.com/