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

Comment supprimer efficacement les éléments en double d'une tranche en Go ?

DDD
Libérer: 2024-10-29 08:29:02
original
870 Les gens l'ont consulté

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

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

Dans votre situation, vous rencontrez un problème lors de la suppression d'éléments en double d'une tranche, car vous réitérer la tranche et supprimer des éléments pendant que vous itérez. Cela peut entraîner des erreurs d'indexation et des paniques si un élément en double se trouve à la fin de la tranche.

Pour résoudre ce problème, une approche plus efficace consiste à copier des éléments uniques au début de la tranche, puis à les découper. tout élément excédentaire par la suite. Voici comment procéder :

<code class="go">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]</code>
Copier après la connexion

Dans ce code :

  • Nous initialisons une variable i à 0, qui représente la position de l'index dans la nouvelle tranche découpée.
  • Nous parcourons chaque élément de cfg.Bootstrap.
  • Si un élément correspond à la fois au PeerID et à l'adresse fournis par l'utilisateur, nous l'ignorons.
  • Sinon, nous copions l'élément à la ième position dans la nouvelle tranche.
  • Nous incrémentons i à la position suivante.
  • Après la boucle, nous attribuons la nouvelle tranche à cfg.Bootstrap et la tronçons à la bonne longueur.

Cette approche garantit que tous les éléments en double sont supprimés et que la tranche reste cohérente tout au long du processus. Cela évite les erreurs d'indexation et les paniques qui peuvent survenir lors de la suppression d'éléments lors d'une itération.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal