Значение, которое вы передаете, имеет тип []interface{}
, поэтому тип элемента будет interface{}
. Если вы хотите посмотреть, что это за типы элементов, вам нужно поразмышлять о них по отдельности:
func f(i interface{}) {
v := reflect.ValueOf(i)
for i := 0; i < v.Len(); i++ {
e := v.Index(i)
fmt.Println(e.Elem().Type())
fmt.Println(e)
}
}
Если вы знаете, что у вас всегда будет []interface{}
, используйте его в качестве типа аргумента для выполнения итерации и проверка типа проще:
func f(things []interface{}) {
for _, thing := range things {
v := reflect.ValueOf(thing)
fmt.Println(v.Type())
fmt.Println(v)
}
}