Функция sort.Reverse

Функция sort.Reverse возвращает объект, который реализует интерфейс sort.Interface и позволяет сортировать слайс в обратном порядке по отношению к переданному компаратору. В параметр функция принимает объект, реализующий интерфейс sort.Interface, который определяет порядок сортировки.

Синтаксис

gosort.Reverse(sort.Interface)

Функция не изменяет исходный слайс напрямую, а возвращает новый объект, который можно передать в функцию sort.Sort.

Пример

Давайте отсортируем слайс строк в обратном алфавитном порядке:

gopackage main

import (
  "fmt"
  "sort"
)

func main() {
  slice := []string{"a", "b", "c", "d", "e"}
  sort.Sort(sort.Reverse(sort.StringSlice(slice)))
  fmt.Println(slice)
}

Результат выполнения кода:

go[e d c b a]

Пример

Давайте отсортируем слайс чисел в обратном порядке:

gopackage main

import (
  "fmt"
  "sort"
)

func main() {
  slice := []int{1, 2, 3, 4, 5}
  sort.Sort(sort.Reverse(sort.IntSlice(slice)))
  fmt.Println(slice)
}

Результат выполнения кода:

go[5 4 3 2 1]

Пример

Давайте используем функцию sort.Reverse с пользовательским типом, реализующим интерфейс sort.Interface:

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

Результат выполнения кода:

go[{Bob 30} {Alice 25} {Charlie 20}]

Смотрите также

  • функцию sort.Sort,
    которая выполняет сортировку слайса
  • функцию sort.Ints,
    которая сортирует слайс чисел по возрастанию
  • функцию sort.Strings,
    которая сортирует слайс строк по алфавиту
  • функцию sort.Slice,
    которая сортирует слайс с пользовательской функцией сравнения