Используйте следующее, чтобы определить, является ли аргумент структурой:
func MyFunk(itf interface{}) {
v := reflect.ValueOf(itf)
if v.Kind() == reflect.Struct {
// it's a struct
}
}
Если вы также хотите проверить наличие указателей на структуры, используйте этот код:
func MyFunk(itf interface{}) {
v := reflect.Indirect(reflect.ValueOf(itf))
if v.Kind() == reflect.Struct {
// it's a struct
}
}