|
|
- 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})
- }
|