4
如何訪問以下代碼的地圖值?代碼段是自動生成的,所以我無法修改它。我試過OpType_name[OpType_UNKNOWN]
,但是我從golang編譯器得到錯誤。如何訪問GO中的地圖值?
type OpType int32
const (
OpType_UNKNOWN OpType = 0
OpType_CREATE OpType = 1
OpType_DELETE OpType = 3
)
var OpType_name = map[int32]string{
0: "UNKNOWN",
1: "CREATE",
2: "DELETE",
}
var OpType_value = map[string]int32{
"UNKNOWN": 0,
"CREATE": 1,
"DELETE": 2,
}
錯誤: cannot use int(api.OpType_UNKNOWN) (type int) as type int32 in map index
或者,使地圖使用OPTYPE代替INT32,'圖[OPTYPE] {字符串' – nos
我認爲值得做的有點吹毛求疵的:'OpType'不是'int32':它只與'int32'共享其類型值的內部表示。關鍵的一點是,「B型A」不會使「B」繼承「A」的任何方法。這對'int32'來說並不重要,它沒有方法,但是在處理自定義類型時很重要。 – kostix
我的意思是,這就是Go爲什麼允許從'int32'到'OpType'類型轉換的原因(數值的內部表示是相同的),但不允許爲類型的接收器賦值'OpType'的值'int32':如果允許,接收者可能需要調用爲其類型定義的方法,但傳遞給它的值不會以其(不同)類型。 – kostix