Go - статически типизированный язык, вы не можете набирать assert для «динамических типов».
Но ты не обязан. «Обтекание» любого конкретного значения, доступного в значении interface{}
, не требует никакой магии, просто передайте это как есть reflect.ValueOf()
:
func getUnderlyingAsValue(data interface{}, underlyingType reflect.Type) reflect.Value {
return reflect.ValueOf(data)
}
Или просто:
func getUnderlyingAsValue(data interface{}) reflect.Value {
return reflect.ValueOf(data)
}
(Эта функция даже не оправдана, она так проста ...)
Попробуйте на игровой площадке Go .
Не существует точечной установки типа конкретного типа из interface{}
, когда следующая и единственная выполняемая вами операция - это передача функции, ожидающей interface{}
. Он снова будет завернут в interface{}
.