Maison > développement back-end > Golang > Comment trier les structures dans Go en utilisant plusieurs paramètres ?

Comment trier les structures dans Go en utilisant plusieurs paramètres ?

Linda Hamilton
Libérer: 2024-12-11 10:03:17
original
183 Les gens l'ont consulté

How to Sort Structs in Go Using Multiple Parameters?

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),
    )
})
Copier après la connexion

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))
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal