Например, у меня есть interface{}
по имени a
, а также у меня есть reflect.Type
под названием elemType
. Теперь я хочу напечатать assert a до elemType
, но a.(elemType)
невозможно скомпилировать. Как это исправить?В golang, как напечатать assert interface {} до типа, указанного отражением.
Извините за мое запутанное выражение. Мое значение в том, что я получаю тип от функции, и я хочу напечатать assert interface {} для этого типа, но этот тип хранится в переменной reflect.Type.
То, что я хочу сделать, это похоже на код ниже:
var a interface{}
//do something
func getType() reflect.Type {
var ret reflect.Type
//do something
return ret
}
targetType := getType()
result := a.(targetType)
elemType не является типом, это var, поэтому это утверждение типа не может работать. Вы можете сделать утверждение типа для 'reflect.Type', но почему-то я сомневаюсь, что это то, что вы хотите сделать. Покажите нам какой-нибудь код? – HectorJ
Puh, empty 'interface {}' _and_ type assertion to' reflect.Type'! Вы уверены, что вы a) должны и b) должны решить вашу проблему следующим образом? Иногда размышление - лучший способ сделать что-то, иногда пустой интерфейс полезен, но оба они не являются самым простым способом решения проблем. – Volker