如何访问以下代码的映射值?代码段是自动生成的,因此我无法对其进行修改.我试过OpType_name[OpType_UNKNOWN]但是我从golang编译器得到错误.
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,
}
Run Code Online (Sandbox Code Playgroud)
错误:
cannot use int(api.OpType_UNKNOWN) (type int) as type int32 in map index
Go对类型非常严格.你的地图都有typ int32的键,你试图使用OpType类型的值访问它们.OpType是int32并不重要.
您可以将OpType转换为int32并使其工作
func main() {
fmt.Println(OpType_name[int32(OpType_UNKNOWN)])
}
Run Code Online (Sandbox Code Playgroud)
来自@nos的评论是一个很好的方法,它可能就是你想要的.
https://play.golang.org/p/dum5GiB3zS