У меня есть interface{}
переменная, и я знаю, что это указатель на срез:интерфейс {} переменная [] Интерфейс {}
func isPointerToSlice(val interface{}) bool {
value := reflect.ValueOf(val)
return value.Kind() == reflect.Ptr && value.Elem().Kind() == reflect.Slice
}
Но я нахожу, что трудно ввести брось в []interface{}
переменной:
if isPointerToSlice(val) {
slice, worked := reflect.ValueOf(val).Elem().Interface().([]interface{})
// 'worked' is false :(
}
Это не работает. Любая идея, как я могу это решить?
@izca, в моем конкретном примере это ошибка с этой ошибкой 'interface conversion: interface {} is * [] util.sample, not * [] interface {}' –
@PabloFernandez '* [] util.sample' и '* [] interface {}' - 2 разных типа.Если ваш 'val' содержит значение типа' * [] util.sample', вы можете получить из него значение '* [] util.sample'. – icza