Maison > Article > développement back-end > Comment supprimer efficacement les pairs en double d’une tranche en 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!