bartender/flatten.go

29 lines
563 B
Go

package main
import (
"reflect"
)
func flatten(v ...interface{}) []string {
args := flattenDeep(nil, reflect.ValueOf(v))
var strings []string
for _, i := range args {
strings = append(strings, i.(string))
}
return strings
}
func flattenDeep(args []interface{}, v reflect.Value) []interface{} {
if v.Kind() == reflect.Interface {
v = v.Elem()
}
if v.Kind() == reflect.Array || v.Kind() == reflect.Slice {
for i := 0; i < v.Len(); i++ {
args = flattenDeep(args, v.Index(i))
}
} else {
args = append(args, v.Interface())
}
return args
}