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.
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