"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo eliminar eficazmente elementos duplicados de un segmento en Go?

¿Cómo eliminar eficazmente elementos duplicados de un segmento en Go?

Publicado el 2024-12-22
Navegar:804

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

Eliminar elementos duplicados de un segmento

En su situación, se encuentra con un problema al eliminar elementos duplicados de un segmento porque Vuelva a iterar a través del segmento y elimine elementos mientras itera. Esto puede provocar errores de índice y pánico si se encuentra un elemento duplicado al final del segmento.

Para solucionar este problema, un enfoque más eficiente es copiar elementos únicos al comienzo del segmento y luego recortarlos. cualquier exceso de elementos después. Así es como puedes hacerlo:

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]

En este código:

  • Inicializamos una variable i en 0, que representa la posición del índice en el nuevo segmento recortado.
  • Repetimos sobre cada elemento de cfg.Bootstrap.
  • Si un elemento coincide con los datos proporcionados por el usuario PeerID y Dirección, los omitimos.
  • De lo contrario, copiamos el elemento a la posición i en el nuevo segmento.
  • Incrementamos i a la siguiente posición.
  • Después el bucle, asignamos el nuevo segmento a cfg.Bootstrap y lo truncamos a la longitud correcta.

Este enfoque garantiza que se eliminen todos los elementos duplicados y que el segmento permanece consistente durante todo el proceso. Evita los errores de índice y los pánicos que pueden ocurrir al eliminar elementos durante la iteración.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3