Quelle est la manière la plus simple de trier un tableau de structures par un champ arbitraire en Go ?
Bonjour à tous ! Je viens de commencer à apprendre Go et j'ai rencontré un problème de tri. J'ai un tableau de structures User :
type User struct {
Name string
Age int
Score float64
}
users := []User{
{"Anna", 25, 88.5},
{"Boris", 30, 92.1},
{"Victor", 22, 85.0},
}
Je dois trier ce tableau par différents champs selon le choix de l'utilisateur : tantôt par nom (alphabétiquement), tantôt par âge, tantôt par score. Je sais qu'il existe le package sort en Go, mais pour chaque champ, je dois écrire une fonction séparée avec Less(i, j int) bool. C'est très peu pratique, surtout s'il y a beaucoup de champs.
Par exemple, le tri par âge :
sort.Slice(users, func(i, j int) bool {
return users[i].Age < users[j].Age
})
Et si je dois trier par nom ? Il faut écrire une nouvelle fonction anonyme. Et s'il y a 10 champs ? Ou trier d'abord par âge, puis par nom ?
En Python...