Ordinare gli slice
sort.Slice e funzioni ausiliarie
Ordinare gli slice è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.
Perché l'ordinamento è importante
L'ordinamento dispone gli elementi in un ordine definito. Il package sort della libreria standard di Go gestisce questa operazione in modo efficiente.
In Go raramente si scrive un proprio algoritmo di ordinamento. Si chiamano invece helper che operano sulle slice.
Importare sort
Per utilizzare il package, lo importi con import "sort". Fa parte della libreria standard, quindi non è necessario scaricare nulla dall'esterno.
package main
import (
"fmt"
"sort"
)
func main() {
fmt.Println("sort imported")
_ = sort.IntsAreSorted([]int{1, 2, 3})
}Ordinare gli interi
sort.Ints ordina in ordine crescente, direttamente, una slice di int. La slice originale viene modificata.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 2, 8, 1, 9}
sort.Ints(nums)
fmt.Println(nums)
}Ordinare le stringhe
sort.Strings ordina una slice di stringhe in ordine lessicografico, cioè alfabetico secondo l'ordine dei byte.
package main
import (
"fmt"
"sort"
)
func main() {
words := []string{"banana", "apple", "cherry"}
sort.Strings(words)
fmt.Println(words)
}Ordinare i numeri in virgola mobile
sort.Float64s ordina in ordine crescente una slice di valori float64.
package main
import (
"fmt"
"sort"
)
func main() {
values := []float64{3.2, 1.5, 2.8}
sort.Float64s(values)
fmt.Println(values)
}sort.Slice
sort.Slice ordina qualsiasi slice utilizzando una funzione less fornita da Lei. La funzione riceve due indici, i e j, e restituisce true se l'elemento i deve precedere l'elemento j.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 2, 8, 1}
sort.Slice(nums, func(i, j int) bool {
return nums[i] < nums[j]
})
fmt.Println(nums)
}Ordine decrescente
Per ordinare in modo decrescente, inverta il confronto nella funzione less: restituisca nums[i] > nums[j].
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 2, 8, 1}
sort.Slice(nums, func(i, j int) bool {
return nums[i] > nums[j]
})
fmt.Println(nums)
}Ordinare le struct
sort.Slice è particolarmente utile con le struct. Può decidere quale campo determina l'ordine.
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
func main() {
people := []Person{{"Bob", 30}, {"Alice", 25}}
sort.Slice(people, func(i, j int) bool {
return people[i].Age < people[j].Age
})
fmt.Println(people)
}Verificare se una slice è ordinata
Helper come sort.IntsAreSorted e sort.SliceIsSorted restituiscono true se una slice è già ordinata, senza modificarla.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{1, 2, 3}
fmt.Println(sort.IntsAreSorted(nums))
}Modifica direttamente
Tutte queste funzioni ordinano direttamente. Non restituiscono una nuova slice. Dopo aver chiamato sort.Ints(s), è la variabile s stessa a essere riordinata.
package main
import (
"fmt"
"sort"
)
func main() {
s := []int{3, 1, 2}
sort.Ints(s)
fmt.Println("s is now:", s)
}Scegliere l'helper giusto
Utilizzi gli helper tipizzati (sort.Ints, sort.Strings, sort.Float64s) per le slice semplici. Scelga sort.Slice quando ha bisogno di una regola personalizzata o deve ordinare struct.
sort.Ints- interi in ordine crescentesort.Slice- qualsiasi tipo, con una regola definita da Lei
Verifica rapida
Che cosa restituisce la funzione less in sort.Slice?
Riepilogo
Ha imparato a ordinare con il package sort:
sort.Ints,sort.Strings,sort.Float64sper le slice tipizzatesort.Slicecon una funzione less per regole personalizzate e struct- Tutti gli ordinamenti avvengono direttamente
Domande Frequenti
La lezione «Ordinare gli slice» è gratuita?
Sì — il testo completo di «Ordinare gli slice» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.
Cosa imparerò in «Ordinare gli slice»?
sort.Slice e funzioni ausiliarie Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Go Academy?
Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Ordinare gli slice»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Go Academy?
Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.