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