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

Comment trier les structures par plusieurs paramètres dans Go ?

Mary-Kate Olsen
Libérer: 2024-12-16 12:20:11
original
320 Les gens l'ont consulté

How to Sort Structs by Multiple Parameters in Go?

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

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

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

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!

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