parent
1da6f00fed
commit
aec1154fce
@ -0,0 +1,52 @@
|
|||||||
|
package CommonUtil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"sort"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Items struct {
|
||||||
|
data interface{}
|
||||||
|
field string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (items *Items) Len() int {
|
||||||
|
if reflect.ValueOf(items.data).Kind() != reflect.Slice {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
return reflect.ValueOf(items.data).Len()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (items *Items) Less(i, j int) bool {
|
||||||
|
a := reflect.ValueOf(items.data).Index(i)
|
||||||
|
b := reflect.ValueOf(items.data).Index(j)
|
||||||
|
if a.Kind() == reflect.Ptr {
|
||||||
|
a = a.Elem()
|
||||||
|
}
|
||||||
|
if b.Kind() == reflect.Ptr {
|
||||||
|
b = b.Elem()
|
||||||
|
}
|
||||||
|
va := a.FieldByName(items.field).Int()
|
||||||
|
vb := b.FieldByName(items.field).Int()
|
||||||
|
return va < vb
|
||||||
|
}
|
||||||
|
|
||||||
|
func (items *Items) Swap(i, j int) {
|
||||||
|
reflect.Swapper(items.data)(i, j)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SortItems(i interface{}, str string, sortType string) {
|
||||||
|
if reflect.ValueOf(i).Kind() != reflect.Slice {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
a := &Items{
|
||||||
|
data: i,
|
||||||
|
field: str,
|
||||||
|
}
|
||||||
|
if sortType == "desc" {
|
||||||
|
sort.Sort(sort.Reverse(a))
|
||||||
|
} else {
|
||||||
|
sort.Sort(a)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue