|
|
- package schedule
-
- import (
- "sort"
- )
-
- /** 用于定义各类排序 **/
-
- //通用结构体排序,必须重写数组Len() Swap() Less()函数
- type body_wrapper struct {
- Bodys [] interface{}
- by func(p,q*interface{}) bool //内部Less()函数会用到
- }
- type SortBodyBy func(p, q* interface{}) bool //定义一个函数类型
-
- //数组长度Len()
- func (acw body_wrapper) Len() int {
- return len(acw.Bodys)
- }
- //元素交换
- func (acw body_wrapper) Swap(i,j int){
- acw.Bodys[i],acw.Bodys[j] = acw.Bodys[j],acw.Bodys[i]
- }
- //比较函数,使用外部传入的by比较函数
- func (acw body_wrapper) Less(i,j int) bool {
- return acw.by(&acw.Bodys[i],&acw.Bodys[j])
- }
- //自定义排序字段,参考SortBodyByCreateTime中的传入函数
- func SortBody(bodys [] interface{}, by SortBodyBy){
- sort.Sort(body_wrapper{bodys,by})
- }
|