"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment supprimer efficacement les pairs en double d’une tranche en Go ?

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

Publié le 2024-11-17
Parcourir:422

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 à prendre en compte. 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 tous les éléments en excès, supprimant ainsi tous les pairs en double, y compris le dernier. .

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3