理解Singular和repeated

消息字段可以是一下之一:

  • singular:消息类型中只能拥有零个或一个此字段,这是proto3语法默认的字段规则
  • repeated:消息类型中可以重复使用该字段,重复值的顺序将被保留

上面的解释是官方文档中的解释,经过我的实验,我觉得可以这么解释:

  • singular:单纯的一个字段
  • repeated:类似于数组

实验如下:

1
2
3
4
5
6
7

message SearchRequest2 {
  string         query           = 1;
  repeated int32 page_number     = 2;
  repeated int32 result_per_page = 3;
}

生成的entity使用方式如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

SearchRequest2OuterClass.SearchRequest2.newBuilder()
        .setQuery("query")
        .setPageNumber(0, 10)
        .setPageNumber(1, 10)
        .setPageNumber(2, 10)
        .setResultPerPage(0, 10)
        .setResultPerPage(1, 10)
        .setResultPerPage(2, 10);