В основном у меня есть map[interface{}]interface{}
и внутри под ключом "x" значение 90 (я напечатал, чтобы подтвердить правильность данных), но когда я делаю
mymap["x"].(float32)
Я получаю сообщение об ошибке
interface conversion: interface {} is uint64, not float32
Проблема в том, что я ожидаю число с плавающей запятой (полученное из вывода другой программы). Я также пытался использовать float32 (mymap ["x"]), но безуспешно (также безуспешно пробовал примеры из Google с int64).
Я использую go версии go1.10.1 linux/amd64
Вы можете использовать преобразование после утверждения типа:
float32(mymap["x"].(uint64))
play.golang.org/p/fBGUf4EDOMD@mkopriva Но это вопрос, который я иногда получаю, например, 45,5, когда 45, а не 45,0. Я могу решить эту проблему с помощью отражения и явного преобразования, но я хотел избежать этого шага, если это возможно, чтобы избежать дополнительного вызова отражения как более медленной части.
Переключатель типа решит вашу проблему? play.golang.org/p/Xe2qt634-D5
Вероятно, вам следует решить эту проблему на том уровне, на котором вы заполняете карту. Но вы не упомянули как вы это делаете.
Что сказал Майкл. Старайтесь не использовать пустой интерфейс, если вам важны типы.