"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 itens duplicados de uma fatia no Go?

Como remover com eficiência itens duplicados de uma fatia no Go?

Publicado em 2024-12-22
Navegar:552

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

Excluindo itens duplicados de uma fatia

Na sua situação, você está enfrentando um problema ao excluir itens duplicados de uma fatia porque você re iterando pela fatia e removendo elementos enquanto você está iterando. Isso pode levar a erros de índice e pânico se um item duplicado estiver localizado no final da fatia.

Para resolver esse problema, uma abordagem mais eficiente é copiar elementos exclusivos para o início da fatia e depois apará-los. quaisquer elementos em excesso posteriormente. Veja como você pode fazer isso:

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]

Neste código:

  • Inicializamos uma variável i com 0, que representa a posição do índice na nova fatia aparada.
  • Nós iteramos sobre cada elemento de cfg.Bootstrap.
  • Se um elemento corresponder ao fornecido pelo usuário PeerID e endereço, nós o ignoramos.
  • Caso contrário, copiamos o elemento para a i-ésima posição na nova fatia.
  • Incrementamos i para a próxima posição.
  • Depois o loop, atribuímos a nova fatia a cfg.Bootstrap e a truncamos para o comprimento correto.

Essa abordagem garante que todos os elementos duplicados sejam removidos e a fatia permaneça consistente durante todo o processo. Ele evita erros de índice e pânico que podem ocorrer ao remover elementos durante a iteração.

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