25 lines
479 B
Go
25 lines
479 B
Go
|
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())
|
||
|
}
|
||
|
}
|