Мне нужно отсортировать фрагмент типа, который идет из пакета 3-го участника. Исходя из некоторых условий, порядок должен быть возрастающим или убывающим.
Решение, которое я придумаю:
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 (v fooAscending) Less(i, j int) bool { return v[i].Amount < v[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 (v fooDescending) Less(i, j int) bool { return v[i].Amount > v[j].Amount }
if someCondition {
sort.Sort(fooAscending(array))
} else {
sort.Sort(fooDescending(array))
}
Есть ли лучший способ сделать это. 13 строк кода для этой задачи, и большая их часть дублируется, кажется, слишком много.