Maison  >  Article  >  développement back-end  >  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
Barbara Streisandoriginal
2024-10-30 14:06:02723parcourir

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]

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!

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