1package builder 2 3import "reflect" 4 5func convert(from interface{}, to interface{}) interface{} { 6 return reflect. 7 ValueOf(from). 8 Convert(reflect.TypeOf(to)). 9 Interface() 10} 11 12func forEach(s interface{}, f func(interface{})) { 13 val := reflect.ValueOf(s) 14 15 kind := val.Kind() 16 if kind != reflect.Slice && kind != reflect.Array { 17 panic(&reflect.ValueError{Method: "builder.forEach", Kind: kind}) 18 } 19 20 l := val.Len() 21 for i := 0; i < l; i++ { 22 f(val.Index(i).Interface()) 23 } 24} 25