required 关键字
顾名思义,就是必须的意思,数据发送方和接管方都必须解决这个字段,不然还怎么通信呢
optional 关键字
字面意思是可选的意思,具体 protobuf 外面怎么解决这个字段呢,就是 protobuf 解决的时候另外加了一个 bool 的变量,用来标记这个 optional 字段是否有值,发送方在发送的时候,如果这个字段有值,那么就给 bool 变量标记为 true,否则就标记为 false,接管方在收到这个字段的同时,也会收到发送方同时发送的 bool 变量,拿着 bool 变量就晓得这个字段是否有值了,这就是 option 的意思。
这也就是他们说的所谓平滑降级,无非就是个兼容的意思。
其实和传输参数的时候,给出数组地址和数组数量是一个情理。
repeated 关键字
字面意思大略是反复的意思,其实 protobuf 解决这个字段的时候,也是 optional 字段一样,另外加了一个 count 计数变量,用于表明这个字段有多少个,这样发送方发送的时候,同时发送了 count 计数变量和这个字段的起始地址,接管方在承受到数据之后,依照 count 来解析对应的数据即可。