Как получить доступ к значению карты для следующего кода? Фрагмент кода генерируется автоматически, поэтому я не могу его изменить. Я пробовал 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'. Важнейшим моментом является то, что 'type B A' не делает' B' "наследовать" любые методы 'A'. Это не имеет значения для 'int32', у которого нет методов, но важно знать, когда имеете дело с настраиваемыми типами. – kostix
Я имею в виду, что именно поэтому Go разрешает преобразование типов из 'int32' в' OpType' (внутреннее представление значения одинаков), но не позволяет присвоить значение 'OpType' получателю типа 'int32': если это будет разрешено, получатель может захотеть вызвать метод, определенный для его типа, но переданное ему значение не будет иметь его (другого) типа. – kostix