reflect.go
func ReflectSort(slice, compareFunc interface{}) {
	sortable, err := newReflectSortable(slice, compareFunc)
	if err != nil {
		panic(err)
	}
	sort.Sort(sortable)
}
func ReflectSort(slice, compareFunc interface{}) {
	sortable, err := newReflectSortable(slice, compareFunc)
	if err != nil {
		panic(err)
	}
	sort.Sort(sortable)
}
func ReflectSort ( slice , compareFunc interface { } ) { sortable , err := newReflectSortable ( slice , compareFunc ) if err != nil { panic ( err ) } sort . Sort ( sortable ) }
// ReflectSort will sort slice according to compareFunc using reflection.
// slice can be a slice of any element type including interface{}.
// compareFunc must have two arguments that are assignable from
// the slice element type or pointers to such a type.
// The result of compareFunc must be a bool indicating
// if the first argument is less than the second.
// If the element type of slice is interface{}, then the type
// of the compareFunc arguments can be any type and dynamic
// casting from the interface value or its address will be attempted.
ReflectSort will sort slice according to compareFunc using reflection . slice can be a slice of any element type including interface {} . compareFunc must have two arguments that are assignable from the slice element type or pointers to such a type . The result of compareFunc must be a bool indicating if the first argument is less than the second . If the element type of slice is interface {} then the type of the compareFunc arguments can be any type and dynamic casting from the interface value or its address will be attempted .