"io"
"reflect"
"runtime"
- "sort"
"strings"
"text/template/parse"
)
}
return v.Interface(), true
}
-
-// sortKeys sorts (if it can) the slice of reflect.Values, which is a slice of map keys.
-func sortKeys(v []reflect.Value) []reflect.Value {
- if len(v) <= 1 {
- return v
- }
- switch v[0].Kind() {
- case reflect.Float32, reflect.Float64:
- sort.Slice(v, func(i, j int) bool {
- return v[i].Float() < v[j].Float()
- })
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
- sort.Slice(v, func(i, j int) bool {
- return v[i].Int() < v[j].Int()
- })
- case reflect.String:
- sort.Slice(v, func(i, j int) bool {
- return v[i].String() < v[j].String()
- })
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
- sort.Slice(v, func(i, j int) bool {
- return v[i].Uint() < v[j].Uint()
- })
- }
- return v
-}