Ce face sort.Ints
sort.Ints, sort.Strings și sort.Float64s sortează crescător slice-ul primit, pe loc: nu returnează nimic, ci modifică slice-ul. Textele sunt sortate după octeți (UTF-8), deci literele mari vin înaintea celor mici, iar literele cu diacritice după z.
sort.IntsAreSorted(x) returnează true dacă elementele sunt deja în ordine crescătoare.
Sunt funcțiile vechi, din Go 1.0. Din Go 1.22 ele apelează pur și simplu slices.Sort. În cod nou folosește direct slices.Sort(x) și slices.IsSorted(x), care merg pentru orice tip ordonat (int64, uint8, tipuri proprii peste string etc.).
Parametri
| Parametru | Descriere |
|---|---|
x |
Slice-ul de sortat sau de verificat. |
Ce returnează
Funcțiile de sortare nu returnează nimic. IntsAreSorted returnează un bool.
Exemple
Exemplul 1: Sortarea notelor și a orașelor
package main
import (
"fmt"
"sort"
)
func main() {
note := []int{7, 10, 5, 9, 8}
fmt.Println(sort.IntsAreSorted(note))
sort.Ints(note)
fmt.Println(note, sort.IntsAreSorted(note))
orase := []string{"Iași", "Cluj", "Arad", "Brașov"}
sort.Strings(orase)
fmt.Println(orase)
preturi := []float64{12.5, 3.99, 7.25}
sort.Float64s(preturi)
fmt.Println(preturi)
}
Rezultat
false
[5 7 8 9 10] true
[Arad Brașov Cluj Iași]
[3.99 7.25 12.5]
Exemplul 2: Varianta modernă cu slices.Sort
Același rezultat cu slices. Observă ordinea după octeți: Zalău (Z mare) vine înaintea lui arad (a mic), iar Ștei la final.
package main
import (
"fmt"
"slices"
)
func main() {
note := []int{7, 10, 5, 9, 8}
slices.Sort(note)
fmt.Println(note, slices.IsSorted(note))
orase := []string{"arad", "Zalău", "Ștei", "Iași"}
slices.Sort(orase)
fmt.Println(orase)
}
Rezultat
[5 7 8 9 10] true
[Iași Zalău arad Ștei]
Greșeli frecvente
- Scrii
note = sort.Ints(note): funcția nu returnează nimic, deci nu compilează. Apelează doarsort.Ints(note). - Aștepți ordine alfabetică românească: sortarea compară octeții, deci
Șajunge dupăZ. Pentru ordinea corectă din limbă ai nevoie degolang.org/x/text/collate.
Comenzi înrudite
slices.Sort: Sortează crescător, pe loc, un slice de orice tip ordonat (numere, texte).sort.Slice: Sortează un slice de orice tip după o funcție less(i, j); SliceStable păstrează ordinea elementelor egale.sort.Search: Căutare binară: Search găsește cel mai mic indice i din [0, n) pentru care f(i) este true; SearchInts caută un int într-un slice sortat.slices.IsSorted: Verifică dacă un slice este sortat crescător; IsSortedFunc folosește o funcție de comparare proprie.