Argomenti importanti di Go
Sorting in Go: sort and slices
Sort numbers, strings and structs, and write your own order with a comparison function.
Cosa imparerai
- sort.Ints
- slices.SortFunc
- sort.Slice for structs
Ranking
Leo95
Mia82
Zoe82
Ben67
You decide the order
Go sorts slices in place. sort.Ints and sort.Strings cover the simple cases, and sort.Slice or slices.SortFunc take a function that decides the order.
slices.SortFunc compares two items and returns a negative number, zero or a positive number; comparing the lower-case forms ignores capital letters. sort.Slice takes a function that says whether item i comes before item j: here a higher score first, then the name.
Punti chiave
- Sorting changes the slice in place.
sort.Slicetakes a less function.- Break ties with a second comparison.
Esempio Go eseguibile
main.go
package main
import (
"fmt"
"slices"
"sort"
"strings"
)
type Student struct {
Name string
Score int
}
func main() {
numbers := []int{5, 2, 8, 1}
sort.Ints(numbers)
fmt.Println(numbers)
words := []string{"pear", "Apple", "fig"}
slices.SortFunc(words, func(a, b string) int {
return strings.Compare(strings.ToLower(a), strings.ToLower(b))
})
fmt.Println(words)
students := []Student{{"Mia", 82}, {"Leo", 95}, {"Zoe", 82}, {"Ben", 67}}
sort.Slice(students, func(i, j int) bool {
if students[i].Score != students[j].Score {
return students[i].Score > students[j].Score
}
return students[i].Name < students[j].Name
})
for rank, student := range students {
fmt.Printf("%d. %s (%d)\n", rank+1, student.Name, student.Score)
}
}
[1 2 5 8]
[Apple fig pear]
1. Leo (95)
2. Mia (82)
3. Zoe (82)
4. Ben (67)Esercitati
Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.
Hai finito questa lezione?
Segnala come imparata per tenere traccia dei tuoi progressi.
I tuoi progressi sono salvati in questo browser Accedi per conservarli su ogni dispositivo.
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
Tutte le sfide