РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
230 of 1593 menu

Функция slices.SortFunc

Функция slices.SortFunc сортирует элементы слайса в порядке возрастания, используя предоставленную функцию сравнения. Первым параметром функция принимает слайс для сортировки, вторым — функцию сравнения cmp, которая должна возвращать отрицательное число, если первый элемент меньше второго, положительное, если больше, и ноль при равенстве. Функция изменяет исходный слайс и не возвращает нового значения.

Синтаксис

slices.SortFunc(slice, func(a, b T) int { // возвращаем -1, 0 или 1 })

Пример

Отсортируем слайс целых чисел по возрастанию с помощью пользовательской функции:

package main import ( "fmt" "slices" ) func main() { nums := []int{5, 2, 8, 1, 3} slices.SortFunc(nums, func(a, b int) int { return a - b }) fmt.Println(nums) }

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

[1 2 3 5 8]

Пример

Отсортируем слайс строк по длине (от коротких к длинным):

package main import ( "fmt" "slices" ) func main() { words := []string{"a", "abc", "ab", "abcd"} slices.SortFunc(words, func(a, b string) int { return len(a) - len(b) }) fmt.Println(words) }

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

[a ab abc abcd]

Пример

Отсортируем слайс структур по полю Age в порядке убывания:

package main import ( "fmt" "slices" ) type Person struct { Name string Age int } func main() { people := []Person{ {"Alice", 30}, {"Bob", 25}, {"Charlie", 35}, } slices.SortFunc(people, func(a, b Person) int { return b.Age - a.Age }) fmt.Println(people) }

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

[{Charlie 35} {Alice 30} {Bob 25}]

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

  • функцию slices.Sort,
    которая сортирует слайс с использованием стандартного сравнения
  • функцию slices.SortStableFunc,
    которая выполняет стабильную сортировку с пользовательской функцией
  • функцию slices.IsSortedFunc,
    которая проверяет, отсортирован ли слайс по заданному правилу
  • функцию slices.Reverse,
    которая разворачивает порядок элементов в слайсе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить