"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como remover com eficiência pares duplicados de um Slice in Go?

Como remover com eficiência pares duplicados de um Slice in Go?

Publicado em 17/11/2024
Navegar:234

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

Removendo itens duplicados de uma fatia

Dado um arquivo de texto contendo uma lista de pares representados como objetos com "Endereço" e "PeerID" atributos, a tarefa é remover todos os pares duplicados com base na correspondência de "Endereço" e "PeerID" da fatia "Bootstrap" no código configuração.

Para conseguir isso, iteramos cada objeto peer na fatia várias vezes. Durante cada iteração, comparamos seu “PeerID” e “Address” com os valores fornecidos pelo usuário. Se uma correspondência for encontrada, removemos esse objeto específico da fatia. Esse processo garante que todas as instâncias do par sejam removidas.

No entanto, há um caso extremo a ser considerado. Se o último par na fatia "Bootstrap" for uma duplicata, o código entrará em pânico com um erro de "limites da fatia fora do intervalo". Para resolver esse problema, podemos implementar uma solução mais robusta que copia valores não correspondentes para o início da fatia e corta o excesso quando a iteração é concluída.

Aqui está o código atualizado:

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]

Este código itera pela fatia "Bootstrap". Para cada objeto peer, ele compara seu "PeerID" e "Address" com os valores fornecidos pelo usuário. Se o par não for duplicado, ele será copiado para o início da fatia no índice “i”. O índice "i" é então incrementado para apontar para a próxima posição disponível.

Uma vez concluída a iteração, a fatia "Bootstrap" é cortada para remover quaisquer elementos em excesso, removendo efetivamente todos os pares duplicados, incluindo o último. .

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3