Maison  >  Article  >  développement back-end  >  Comment supprimer efficacement les entrées en double d’une tranche en Go ?

Comment supprimer efficacement les entrées en double d’une tranche en Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 01:53:02756parcourir

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

Suppression des doublons d'une tranche

Vous souhaitez supprimer les pairs en double d'un fichier texte où chaque pair est caractérisé par une adresse et un PeerID. Le code fourni s'attaque efficacement à cette tâche mais rencontre une erreur lors de la suppression du dernier doublon. Pour résoudre ce problème, une approche révisée est présentée.

Pour commencer, déclarez une variable i et initialisez-la à 0. Cette variable suivra l'index du dernier homologue non dupliqué dans la tranche cfg.Bootstrap. Ensuite, parcourez la tranche à l'aide d'une boucle for basée sur une plage.

Dans la boucle, vérifiez si l'adresse et le PeerID du homologue actuel correspondent à ceux du homologue à supprimer. Si tel est le cas, ignorez le homologue actuel. Sinon, attribuez le homologue actuel à cfg.Bootstrap[i] et incrémentez i.

Une fois la boucle terminée, cfg.Bootstrap[i:] ne contiendra que les homologues en double qui doivent être supprimés. Pour réduire ces valeurs excédentaires, attribuez cfg.Bootstrap[:i] à cfg.Bootstrap.

Voici l'extrait de code révisé :

<code class="go">i := 0
for _, v := range cfg.Bootstrap {
   if v.PeerId == peer.PeerId &amp;&amp; v.Address == peer.Address {
      continue
   }
   cfg.Bootstrap[i] = v
   i++
}
cfg.Bootstrap = cfg.Bootstrap[:i]</code>

Cette approche révisée supprime efficacement tous les pairs en double, y compris ceux en dernière position.

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