"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 > ¿Por qué Golang no tiene una estructura de datos de conjunto nativo?

¿Por qué Golang no tiene una estructura de datos de conjunto nativo?

Publicado el 2024-11-15
Navegar:335

Why Doesn't Golang Have a Native Set Data Structure?

La curiosa falta de estructura de datos establecida en Golang

En Golang, la necesidad fundamental de una estructura de datos establecida ha llevado a la pregunta desconcertante: ¿Por qué? ¿No se proporciona uno de forma nativa? Inspirándose en la influyente biblioteca Guava de Google, ¿por qué los diseñadores de Golang omitieron el soporte para una estructura tan fundamental, lo que obligó a los desarrolladores a crear sus propias implementaciones?

La respuesta está en la simplicidad de construir conjuntos usando mapas. Como se demuestra en el fragmento de código proporcionado, los mapas se pueden aprovechar para crear conjuntos. Las operaciones clave como verificar la existencia, agregar, eliminar y realizar operaciones de conjuntos (unión, intersección) se pueden implementar fácilmente.

s := map[int]bool{5: true, 2: true}
_, ok := s[6] // check for existence
s[8] = true // add element 
delete(s, 2) // remove element

// Union
s_union := map[int]bool{}
for k, _ := range s1{
    s_union[k] = true
}
for k, _ := range s2{
    s_union[k] = true
}

// Intersection
s_intersection := map[int]bool{}
if len(s1) > len(s2) {
  s1, s2 = s2, s1 // better to iterate over a shorter set
}
for k,_ := range s1 { 
  if s2[k] {
    s_intersection[k] = true
  }
}

Si bien estas implementaciones basadas en mapas son suficientes para la mayoría de los escenarios prácticos, algunos pueden argumentar que una implementación de conjunto nativo simplificaría y mejoraría la legibilidad del código. No obstante, para los desarrolladores de Golang, comprender el uso de mapas como conjuntos es crucial tanto para la resolución de problemas como para la utilización eficiente de los recursos.

Ú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