1

这是一个真实的例子;手写.proto文件提取:

message StatsResponse {
  optional int64 gets = 1;
  optional int64 cache_hits = 12;
  optional int64 fills = 2;
  optional uint64 total_alloc = 3;
  optional CacheStats main_cache = 4;
  optional CacheStats hot_cache = 5;
  optional int64 server_in = 6;
  optional int64 loads = 8;
  optional int64 peer_loads = 9;
  optional int64 peer_errors = 10;
  optional int64 local_loads = 11;
}

我了解它的一切,除了编写它的程序员如何选择他要使用的标签号。

官方文档只记录了这些标签是如何移动和编码以组成一个电线类型标识符的。然而,在上面的示例中,相同数据类型的多个字段具有不同的标签号。

我的问题是;.proto如果我要从头开始编写文件,我该如何选择标签号?

4

1 回答 1

3

数字只是标识字段的另一种方法,而不是其名称。编码使用数字而不是名称,因为它们占用更少的空间和时间来编码。只要您以后不更改数字,使用什么数字都没有关系(尽管数字越小在线路上占用的空间越小)。

通常,人们只是从 1 开始按顺序分配数字。在您的示例原型中,cache_hits可能是在所有其他字段之后添加的新字段,这就是它的数字出现“无序”的原因。

于 2013-11-13T23:30:35.873 回答