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
Mary-Kate Olsenoriginal
2024-12-16 12:20:11321parcourir

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),
    )
})

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!

Déclaration:
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