Comment trier des structures avec plusieurs paramètres
Dans Go, lors du tri d'une tranche de structures, il est souvent utile de prendre en compte plusieurs paramètres de tri. Par exemple, nous pouvons vouloir trier les membres d'abord par leur nom de famille, puis par leur prénom.
Une façon d'y parvenir consiste à utiliser la fonction slices.SortFunc introduite dans Go 1.22. slices.SortFunc nous permet de spécifier une fonction de comparaison personnalisée :
slices.SortFunc(members, func(a, b Member) int { return cmp.Or( cmp.Compare(a.LastName, b.LastName), cmp.Compare(a.FirstName, b.FirstName), ) })
Ici, nous utilisons cmp.Or pour appliquer à la fois des comparaisons de nom et de prénom. cmp.Compare renvoie un entier indiquant l'égalité (0), supérieur à (1) ou inférieur à (-1).
Une autre option, disponible depuis Go 1.8, consiste à utiliser le tri.Slice ou le tri. Trier les fonctions avec une fonction less personnalisée :
sort.Sort(byLastFirst(members))
Ici, nous définissons un type byLastFirst personnalisé qui implémente les méthodes Len, Swap et Less du interface de tri.Interface. La méthode Less vérifie à la fois le nom et le prénom à des fins de comparaison.
L'approche à choisir dépend de la version de Go que vous utilisez et de la commodité qu'elle offre pour votre application spécifique. Cependant, à moins que le tri ne s’avère être un goulot d’étranglement en termes de performances, l’approche la plus pratique est généralement préférée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!