Maison > développement back-end > Golang > Comment puis-je trier facilement les structures par champs spécifiques dans Go ?

Comment puis-je trier facilement les structures par champs spécifiques dans Go ?

Linda Hamilton
Libérer: 2024-12-23 00:05:10
original
473 Les gens l'ont consulté

How Can I Easily Sort Structs by Specific Fields in Go?

Tri des structures par champs spécifiques avec simplicité dans Go

Dans Go, lorsque vous travaillez avec des structures, triez sans effort un tableau de structures par champ personnalisé les noms sont souvent souhaités. Par exemple, si vous disposez d'un tableau de planètes, chaque planète étant représentée sous la forme d'une structure avec des champs tels que "Nom" et "Axe", vous devrez peut-être les organiser en fonction de leurs valeurs "Axe".

Le La solution traditionnelle implique l'utilisation du package de tri et l'introduction d'un code passe-partout important pour gérer le tri par clés spécifiques. Cependant, avec l'introduction de Go 1.8, la tâche a été grandement simplifiée avec l'ajout de la fonction sort.Slice.

Utiliser sort.Slice pour un tri efficace

sort.Slice vous permet de trier une tranche, qui est une structure de données plus flexible qu'un tableau. Pour trier un tableau de structures, convertissez-le simplement en tranche en utilisant la syntaxe [:] :

sort.Slice(planets[:], func(i, j int) bool {
  return planets[i].Axis < planets[j].Axis
})
Copier après la connexion
Copier après la connexion

Cette fonction de comparaison spécifie le tri par ordre croissant en fonction du champ "Axe".

Remarque concernant les tableaux et les tranches

Les tableaux dans Go ont une taille fixe et ne peuvent pas être étendus, contrairement à tranches. Dans la plupart des scénarios, les tranches sont préférées car elles offrent des capacités de redimensionnement dynamique. Si vous devez utiliser un tableau, assurez-vous de le convertir en tranche avant de trier à l'aide de sort.Slice. Ceci est réalisé en ajoutant [:] après la variable du tableau, comme indiqué ci-dessous :

sort.Slice(planets[:], func(i, j int) bool {
  return planets[i].Axis < planets[j].Axis
})
Copier après la connexion
Copier après la connexion

Après l'opération de tri, le tableau d'origine est modifié, vous permettant de continuer à utiliser le tableau trié si nécessaire.

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