package builder import "reflect" func convert(from interface{}, to interface{}) interface{} { return reflect. ValueOf(from). Convert(reflect.TypeOf(to)). Interface() } func forEach(s interface{}, f func(interface{})) { val := reflect.ValueOf(s) kind := val.Kind() if kind != reflect.Slice && kind != reflect.Array { panic(&reflect.ValueError{Method: "builder.forEach", Kind: kind}) } l := val.Len() for i := 0; i < l; i++ { f(val.Index(i).Interface()) } }