我需要对来自3rdparty包的类型切片进行排序。基于某些条件,订单必须是升序或降序。golang排序切片升序或降序
的解决方案,我想出是:
type fooAscending []foo
func (v fooAscending) Len() int { return len(v) }
func (v fooAscending) Swap(i, j int) { v[i], v[j] = v[j], v[i] }
func (a fooAscending) Less(i, j int) bool { return a[i].Amount < a[j].Amount }
type fooDescending []foo
func (v fooDescending) Len() int { return len(v) }
func (v fooDescending) Swap(i, j int) { v[i], v[j] = v[j], v[i] }
func (a fooDescending) Less(i, j int) bool { return a[i].Amount > a[j].Amount }
if something
sort.Sort(fooAscending(array))
} else {
sort.Sort(fooDescending(array))
}
有没有更好的方式来做到这一点。这个任务的13行代码,大部分都是重复的,看起来有点过分。