Функция 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,
которая разворачивает порядок элементов в слайсе