Функция sort.Slice
Функция sort.Slice сортирует срез с использованием пользовательской функции сравнения. Она принимает два параметра: первый параметр - срез, который нужно отсортировать, второй параметр - функцию сравнения, которая должна возвращать true, если элемент с индексом i должен располагаться перед элементом с индексом j. Сортировка не является устойчивой: порядок равных элементов может измениться.
Синтаксис
sort.Slice(slice, func(i, j int) bool {
return slice[i] < slice[j]
})
Пример
Давайте отсортируем срез строк по возрастанию:
package main
import (
"fmt"
"sort"
)
func main() {
slice := []string{"a", "c", "b", "e", "d"}
sort.Slice(slice, func(i, j int) bool {
return slice[i] < slice[j]
})
fmt.Println(slice)
}
Результат выполнения кода:
[a b c d e]
Пример
Давайте отсортируем срез чисел по убыванию:
package main
import (
"fmt"
"sort"
)
func main() {
slice := []int{1, 5, 3, 4, 2}
sort.Slice(slice, func(i, j int) bool {
return slice[i] > slice[j]
})
fmt.Println(slice)
}
Результат выполнения кода:
[5 4 3 2 1]
Пример
Давайте отсортируем срез структур по возрасту:
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
func main() {
people := []Person{
{"Alice", 30},
{"Bob", 25},
{"Charlie", 35},
}
sort.Slice(people, func(i, j int) bool {
return people[i].Age < people[j].Age
})
fmt.Println(people)
}
Результат выполнения кода:
[{Bob 25} {Alice 30} {Charlie 35}]
Смотрите также
-
функцию
sort.SliceStable,
которая выполняет устойчивую сортировку среза -
функцию
sort.Ints,
которая сортирует срез целых чисел -
функцию
sort.Strings,
которая сортирует срез строк -
функцию
sort.SliceIsSorted,
которая проверяет, отсортирован ли срез по заданному правилу