Prototype备忘录

Protobuf使用指南

1..proto文件第一行syntax = "proto3";确定使用的proto版本。如果不加这一行,默认使用proto2,注意proto2和proto3语法不同。


2.如果怕message重名,第二行会声明包类型。package foo.bar;如果是在golang里,可以使用go_package

重写自动生成的包。

package exmaple.high_score;

option go_package = "hs";


3.定义一个消息类型:

message SearchRequest {

  string query = 1;

  int32 page_number = 2;
  int32 result_per_page = 3;

}

可以看到message的字段都有一个数字与之对应,这里是1,2,3,都是不同且唯一的数字.这些字段值用来在消息二进制格式里区分字段,一旦开始使用就不应该再改动。

字段值1-15,用一个自己来编码,包括字段值和字段类型。

字段16-2047用两个字节。所以应该保留1-15给经常使用的字段。

最小值可以设置为1,最大2-29次幂-1(536,870,911)。

pb预先保留的值FieldDescriptor::kFirstReservedNumber(19000)-FieldDescriptor::kLastReservedNumber(19999)也不能用。


4.指定字段规则

    singular : message可以包含0个或者最多1个该字段

    repeated:可重复任意数量,包括0个。

在proto3中,repeated标量字段默认使用[packed=true];




猜你喜欢

转载自blog.csdn.net/LightUpHeaven/article/details/80408449