问题描述
因此 protobuf 不允许字符串枚举作为映射中的键
我想将地图限制为只有键 a、b 或 c。
我在 Kotlin 工作,可以使用像 [(validate.rules).string = {pattern: "^a|b|c$"}]
message payload {
map<desired_constrained_key_here,string> my_map = 1;
}
能做到吗? 我该怎么做? 我在 protobuf 文档中没有看到这一点。
解决方法
不,那是不可能的;没有语法来表达这一点,也没有在任何实现中强制执行。
然而,以下两种方法都是可行的,而且效率更高,但需要不同的用法:
message payload {
string a = 1;
string b = 2;
string c = 3;
}
这最终是表示 3 个可选键 a
、b
、c
和每个键的 string
值之间的映射的另一种方式。>