我可以用這個指令獲得原型虛無的枚舉的字符串值: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 關注
- 94 瀏覽
添加回答
舉報
0/150
提交
取消