我可以用这个指令获得原型虚无的枚举的字符串值:str := testPB.Status_ENABLED.String()如何执行逆向运算?(从字符串中获取枚举元素)。
1 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
生成的代码具有一个名为 的映射类型 。然后,您可以将数值转换为实际定义的类型:<EnumName>_valuemap[string]int32
num := testPB.Status_value[str]
v := testPB.Status(num)
请注意,如果映射中不存在该值(请注意,它区分大小写),则映射查找将返回 。根据您定义原型缓冲区的方式,该值可能会映射到没有“零”语义的枚举实例。这就是为什么建议映射到“未知”实例的原因:str000
enum Status {
UNKNOWN = 0;
ENABLED = 1;
// and so on
}
如果字符串表示实际上是未知的,则在Go中正确生成临时零值:
v := testPB.Status(testPB.Status_value["does_not_exist"])
fmt.Println(v == testPB.Status_UNKNOWN) // true
- 1 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消
