Tri des structures avec plusieurs paramètres
Question :
Comment un tableau de structures peut-il être triés par plusieurs paramètres, notamment par nom de famille puis prénom dans Go ?
Réponse :
Il existe plusieurs approches pour trier les structures avec plusieurs paramètres dans Go.
Go 1.22 avec slices.SortFunc
La dernière version de Go (1.22 et versions ultérieures) propose un aperçu concis solution utilisant slices.SortFunc :
slices.SortFunc(members, func(a, b Member) int { return cmp.Or( cmp.Compare(a.LastName, b.LastName), cmp.Compare(a.FirstName, b.FirstName), ) })
sort.Slice ou sort.Sort Functions
Pour les versions antérieures de Go, pensez à utiliser sort.Slice ou sort.Sort . Les deux nécessitent une fonction moins personnalisée qui détermine l'ordre en fonction des paramètres souhaités.
Avec sort.Slice :
sort.Slice(members, func(i, j int) bool { if members[i].LastName != members[j].LastName { return members[i].LastName < members[j].LastName } return members[i].FirstName < members[j].FirstName })
Avec sort.Sort :
Créez un type personnalisé qui implémente l'interface sort.Interface, définissant les paramètres Len, Swap et Less. méthodes.
type byLastFirst []Member func (members byLastFirst) Len() int { return len(members) } func (members byLastFirst) Swap(i, j int) { members[i], members[j] = members[j], members[i] } func (members byLastFirst) Less(i, j int) bool { if members[i].LastName != members[j].LastName { return members[i].LastName < members[j].LastName } return members[i].FirstName < members[j].FirstName } sort.Sort(byLastFirst(members))
Considérations sur les performances :
Bien que ces approches fournissent différentes manières de trier les structures, l'analyse des performances est cruciale pour optimiser les points chauds. Choisissez l'approche qui correspond le mieux aux exigences de votre application.
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!