"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 éléments en double d’une tranche en Go ?

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

Publié le 2024-12-22
Parcourir:841

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 :

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]

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 au PeerID fournis par l'utilisateur Adresse, on la saute.
  • Sinon, on copie l'élément à la ième position dans la nouvelle tranche.
  • On incrémente 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.

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