package main
import (
"cmp"
"fmt"
"slices"
)
func main() {
fruits := []string{"peach", "banana", "kiwi"}
// Uzunlik bo'yicha solishtirish funksiyasi — cmp.Compare yordam beradi
lenCmp := func(a, b string) int {
return cmp.Compare(len(a), len(b))
}
// Maxsus comparator bilan saralash
slices.SortFunc(fruits, lenCmp)
fmt.Println(fruits)
// Built-in bo'lmagan tur uchun ham xuddi shu tamoyil
type Person struct {
name string
age int
}
people := []Person{
{name: "Jax", age: 37},
{name: "TJ", age: 25},
{name: "Alex", age: 72},
}
// Yoshi bo'yicha saralash
slices.SortFunc(people, func(a, b Person) int {
return cmp.Compare(a.age, b.age)
})
fmt.Println(people)
}
Eslatma: Person juda katta bo'lsa, []*Person ishlatish va comparator'ni moslashtirish ma'qul bo'lishi mumkin. Shubha bo'lsa, benchmark qiling.
Terminalda bajarish:
$ go run sorting-by-functions.go
[kiwi peach banana]
[{TJ 25} {Jax 37} {Alex 72}]