为了账号安全,请及时绑定邮箱和手机立即绑定

如何从其字符串表示中获取原始枚举值?

如何从其字符串表示中获取原始枚举值?

Go
潇潇雨雨 2022-09-19 10:44:24
我可以用这个指令获得原型虚无的枚举的字符串值: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


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号