Maison >développement back-end >Golang >Comment trier une tranche de structures par plusieurs champs dans Go ?
Considérez les structures parent et enfant suivantes :
type Parent struct { id string children []Child } type Child struct { id string }
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"}, }, }, }
Exigences de tri :
Notre objectif est de trier la tranche parents en fonction de deux critères :
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>
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}]}]
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!