Aller au contenu

Tri avec fonctions personnalisées

Pour un tri personnalisé (par exemple par champ d’une structure), utilisez sort.Slice avec une fonction “moins”. Cela évite d’implémenter sort.Interface.

Trier une slice de structures par âge puis par nom.

package main
import (
"fmt"
"sort"
)
type Personne struct {
Nom string
Age int
}
func main() {
personnes := []Personne{
{"Alice", 30},
{"Bob", 25},
{"Charlie", 35},
}
// Tri par âge croissant
sort.Slice(personnes, func(i, j int) bool {
return personnes[i].Age < personnes[j].Age
})
fmt.Println("Par âge :", personnes)
// Tri par nom décroissant
sort.Slice(personnes, func(i, j int) bool {
return personnes[i].Nom > personnes[j].Nom
})
fmt.Println("Par nom décroissant :", personnes)
}
Fenêtre de terminal
Par âge : [{Bob 25} {Alice 30} {Charlie 35}]
Par nom décroissant : [{Charlie 35} {Bob 25} {Alice 30}]