go-ml.dev/pkg/base@v0.0.0-20200610162856-60c38abac71b/fu/sort.go (about) 1 package fu 2 3 import ( 4 "reflect" 5 "sort" 6 ) 7 8 func Sort(a interface{}) { 9 v := reflect.ValueOf(a) 10 t := v.Type().Elem() 11 switch t.Kind() { 12 case reflect.Int: 13 sort.Ints(a.([]int)) 14 case reflect.String: 15 sort.Strings(a.([]string)) 16 default: 17 sort.Slice(a, func(i, j int) bool { return Less(v.Index(i), v.Index(j)) }) 18 } 19 } 20 21 func Sorted(a interface{}) interface{} { 22 b := CopySlice(a) 23 Sort(b) 24 return b 25 }