Maison > développement back-end > Golang > Comment supprimer efficacement les pairs en double d'une tranche en Go ?

Comment supprimer efficacement les pairs en double d'une tranche en Go ?

Barbara Streisand
Libérer: 2024-10-30 14:06:02
original
898 Les gens l'ont consulté

How to Efficiently Remove Duplicate Peers from a Slice in Go?

Suppression des éléments en double d'une tranche

Étant donné un fichier texte contenant une liste de pairs représentés sous forme d'objets avec "Adresse" et "PeerID" attributs, la tâche consiste à supprimer tous les pairs en double en fonction de la correspondance "Adresse" et "PeerID" de la tranche "Bootstrap" dans la configuration du code.

Pour y parvenir, nous parcourons chaque objet homologue dans la tranche plusieurs fois. Lors de chaque itération, nous comparons son "PeerID" et son "Address" avec les valeurs fournies par l'utilisateur. Si une correspondance est trouvée, nous supprimons cet objet spécifique de la tranche. Ce processus garantit que toutes les instances du homologue sont supprimées.

Cependant, il existe un cas limite à considérer. Si le dernier homologue de la tranche « Bootstrap » est un doublon, le code paniquera avec une erreur « limites de tranche hors de portée ». Pour résoudre ce problème, nous pouvons implémenter une solution plus robuste qui copie les valeurs qui ne correspondent pas au début de la tranche et supprime l'excédent une fois l'itération terminée.

Voici le code mis à jour :

i := 0
for _, v := range cfg.Bootstrap {
   if v.PeerId == peer.PeerId && v.Address == peer.Address {
      continue
   }
   cfg.Bootstrap[i] = v
   i++
}
cfg.Bootstrap = cfg.Bootstrap[:i]
Copier après la connexion

Ce code parcourt la tranche "Bootstrap". Pour chaque objet homologue, il compare ses « PeerID » et « Adresse » avec les valeurs fournies par l'utilisateur. Si l'homologue n'est pas un doublon, il est copié au début de la tranche à l'index « i ». L'index "i" est ensuite incrémenté pour pointer vers la prochaine position disponible.

Une fois l'itération terminée, la tranche "Bootstrap" est découpée pour supprimer tout élément en excès, supprimant ainsi tous les pairs en double, y compris le dernier. .

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