这是一个real-life例子;手写的.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;
}
我理解它的一切,除了编写它的程序员如何选择他将要使用的标签号。
官方documentation只是注意这些标签是如何移动并编码以组成线型标识符的。但是,在上面的示例中,相同数据类型的多个字段具有不同的标记号。
我的问题是;如果我要从头开始编写.proto
文件,如何选择标签号?
答案 0 :(得分:3)
除了名称之外,该号码只是识别字段的另一种方法。编码使用数字而不是名称,因为它们占用的空间和时间更少。只要您以后不更改数字,使用哪个数字并不重要(尽管较低的数字会减少电线上的空间)。
通常,人们只是从1开始按顺序分配数字。在你的示例proto中,cache_hits
可能是在所有其他字符之后添加的新字段,这就是为什么它的数字显示为“乱序”的原因