Tópicos importantes de Go
Sorting in Go: sort and slices
Sort numbers, strings and structs, and write your own order with a comparison function.
O que você vai aprender
- 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.
Pontos-chave
- Sorting changes the slice in place.
sort.Slicetakes a less function.- Break ties with a second comparison.
Exemplo executável de Go
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)Pratique
Abra o exemplo no compilador online, mude um valor ou adicione uma linha e tente prever a saída antes de executar. Depois quebre o código de propósito e leia a mensagem do compilador.
Terminou esta lição?
Marque como aprendida para acompanhar seu progresso.
Seu progresso está salvo neste navegador Entre para mantê-lo em todos os dispositivos.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
Todos os desafios