Maison > développement back-end > Golang > Comment trier une tranche de structures par plusieurs champs dans Go ?

Comment trier une tranche de structures par plusieurs champs dans Go ?

Mary-Kate Olsen
Libérer: 2024-10-29 20:07:30
original
541 Les gens l'ont consulté

How to Sort a Slice of Structs by Multiple Fields in Go?

Tri des objets de tranche selon plusieurs champs

Tri selon plusieurs critères

Considérez les structures parent et enfant suivantes :

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}
Copier après la connexion

Supposons que nous ayons une tranche de structures Parent avec des valeurs prédéfinies :

parents := []Parent{
    {
        "3",
        []Child{
            {"2"},
            {"3"},
            {"1"},
        },
    },
    {
        "1",
        []Child{
            {"8"},
            {"9"},
            {"7"},
        },
    },
    {
        "2",
        []Child{
            {"5"},
            {"6"},
            {"4"},
        },
    },
}
Copier après la connexion

Exigences de tri :

Notre objectif est de trier la tranche parents en fonction de deux critères :

  1. Trier les structures parents par ordre croissant de leur champ d'identification.
  2. Dans chaque structure parent, trier les tranches enfants par ordre croissant de leur champ d'identification.

Solution :

Pour réaliser ce tri, nous utilisons la fonction sort.Slice, qui offre un moyen flexible de trier les tranches en fonction de fonctions de comparaison personnalisées. Voici le code :

<code class="go">// Sort parents by their ID
sort.Slice(parents, func(i, j int) bool { return parents[i].id < parents[j].id })

// Iterate over each parent and sort their children by ID
for _, parent := range parents {
    sort.Slice(parent.children, func(i, j int) bool { return parent.children[i].id < parent.children[j].id })
}</code>
Copier après la connexion

Cet algorithme de tri gère efficacement les deux critères, garantissant que la tranche des parents est ordonnée comme souhaité.

Résultat attendu :

La tranche triée doit ressembler à la structure suivante :

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
Copier après la connexion

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