我可以用這個指令獲得原型虛無的枚舉的字符串值:str := testPB.Status_ENABLED.String()如何執(zhí)行逆向運算?(從字符串中獲取枚舉元素)。
1 回答

嚕嚕噠
TA貢獻1784條經(jīng)驗 獲得超7個贊
生成的代碼具有一個名為 的映射類型 。然后,您可以將數(shù)值轉(zhuǎn)換為實際定義的類型:<EnumName>_valuemap[string]int32
num := testPB.Status_value[str]
v := testPB.Status(num)
請注意,如果映射中不存在該值(請注意,它區(qū)分大小寫),則映射查找將返回 。根據(jù)您定義原型緩沖區(qū)的方式,該值可能會映射到?jīng)]有“零”語義的枚舉實例。這就是為什么建議映射到“未知”實例的原因: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 關(guān)注
- 89 瀏覽
添加回答
舉報
0/150
提交
取消