1

我能用吗

message Foo {
  map<string, string> foo = 1;
}

代替

message Foo {
  repeated KeyValuePair foo = 1;
}

message KeyValuePair {
  string key = 1;
  string value = 2;
}

?

第一个来源在 proto3 中,第二个来源在 proto2 中。

4

1 回答 1

1

只要您没有重复的键,它们就会非常相似。如果您有重复的键,则使用映射会有不同的行为,因为 duplicatws 会导致覆盖或异常(我不记得是哪个,抱歉)。此外,“重复”通常实现为列表/数组/等,因此:保留顺序。“地图”通常用某种地图/字典结构来实现,通常不能保证顺序。

所以:如果顺序无关紧要并且你总是有唯一的键:你很好。

于 2019-03-30T17:48:55.520 回答