我可以使用
message Foo {
map<string, string> foo = 1;
}
代替
message Foo {
repeated KeyValuePair foo = 1;
}
message KeyValuePair {
string key = 1;
string value = 2;
}
?
第一个来源在proto3中,第二个来源在proto2中。
答案 0 :(得分:1)
只要您没有重复的键,它们就会非常相似。如果您有重复的键,则使用映射将具有不同的行为,因为重复将导致覆盖或异常(对不起,我无法回忆起)。同样,“重复”通常实现为列表/数组/等,因此:顺序得以保留。 “地图”通常以某种地图/字典结构实现,通常不会保证顺序。
所以:如果顺序无关紧要,并且您始终拥有唯一的键:就可以了。