"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 de manera eficiente pares duplicados de un segmento en Go?

¿Cómo eliminar de manera eficiente pares duplicados de un segmento en Go?

Publicado el 2024-11-17
Navegar:787

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

Eliminar elementos duplicados de un segmento

Dado un archivo de texto que contiene una lista de pares representados como objetos con "Dirección" y "PeerID" atributos, la tarea es eliminar todos los pares duplicados basándose en la coincidencia de "Dirección" y "PeerID" del segmento "Bootstrap" en la configuración del código.

Para lograr esto, iteramos a través de cada objeto de igual en el segmento varias veces. Durante cada iteración, comparamos su "PeerID" y su "Dirección" con los valores proporcionados por el usuario. Si se encuentra una coincidencia, eliminamos ese objeto específico del segmento. Este proceso garantiza que se eliminen todas las instancias del par.

Sin embargo, hay un caso límite a considerar. Si el último par en el segmento "Bootstrap" es un duplicado, el código entrará en pánico con un error de "límites del segmento fuera de rango". Para solucionar este problema, podemos implementar una solución más sólida que copie los valores que no coinciden al comienzo del segmento y recorte el exceso cuando se complete la iteración.

Aquí está el código actualizado:

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 recorre en iteración el segmento "Bootstrap". Para cada objeto del mismo nivel, compara su "PeerID" y su "Dirección" con los valores proporcionados por el usuario. Si el par no es un duplicado, se copia al principio del segmento en el índice "i". Luego, el índice "i" se incrementa para apuntar a la siguiente posición disponible.

Una vez que se completa la iteración, el segmento "Bootstrap" se recorta para eliminar cualquier elemento sobrante, eliminando efectivamente todos los pares duplicados, incluido el último. .

Ú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