Функция sort.Reverse
Функция sort.Reverse возвращает объект, который реализует интерфейс
sort.Interface и позволяет сортировать слайс в обратном порядке
по отношению к переданному компаратору. В параметр функция принимает
объект, реализующий интерфейс sort.Interface, который определяет
порядок сортировки.
Синтаксис
sort.Reverse(sort.Interface)
Функция не изменяет исходный слайс напрямую, а возвращает новый объект,
который можно передать в функцию sort.Sort.
Пример
Давайте отсортируем слайс строк в обратном алфавитном порядке:
package main
import (
"fmt"
"sort"
)
func main() {
slice := []string{"a", "b", "c", "d", "e"}
sort.Sort(sort.Reverse(sort.StringSlice(slice)))
fmt.Println(slice)
}
Результат выполнения кода:
[e d c b a]
Пример
Давайте отсортируем слайс чисел в обратном порядке:
package main
import (
"fmt"
"sort"
)
func main() {
slice := []int{1, 2, 3, 4, 5}
sort.Sort(sort.Reverse(sort.IntSlice(slice)))
fmt.Println(slice)
}
Результат выполнения кода:
[5 4 3 2 1]
Пример
Давайте используем функцию sort.Reverse с пользовательским типом,
реализующим интерфейс sort.Interface:
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
type ByAge []Person
func (a ByAge) Len() int {
return len(a)
}
func (a ByAge) Less(i, j int) bool {
return a[i].Age < a[j].Age
}
func (a ByAge) Swap(i, j int) {
a[i], a[j] = a[j], a[i]
}
func main() {
people := []Person{
{"Alice", 25},
{"Bob", 30},
{"Charlie", 20},
}
sort.Sort(sort.Reverse(ByAge(people)))
fmt.Println(people)
}
Результат выполнения кода:
[{Bob 30} {Alice 25} {Charlie 20}]
Смотрите также
-
функцию
sort.Sort,
которая выполняет сортировку слайса -
функцию
sort.Ints,
которая сортирует слайс чисел по возрастанию -
функцию
sort.Strings,
которая сортирует слайс строк по алфавиту -
функцию
sort.Slice,
которая сортирует слайс с пользовательской функцией сравнения