Go Equivalent para la comprensión de listas de Python
La comprensión de listas de Python ofrece una forma concisa de generar listas filtrando y transformando elementos. Sin embargo, si está realizando la transición a Go y le resulta difícil replicar esta funcionalidad, aquí tiene una solución:
Solución elegante que utiliza el paquete de filtros
Afortunadamente, la comunidad Go ha proporcionado el paquete de filtro, que ofrece una funcionalidad similar a la comprensión de listas de Python. Específicamente, su función Elegir toma un segmento y una función de filtrado, devolviendo un nuevo segmento que contiene solo los elementos que pasan el filtro.
import "github.com/rogpeppe/go-internal/filter" func Choose(slice []T, fn func(T) bool) []T
Ejemplo:
// Get even numbers from a list a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} expect := []int{2, 4, 6, 8} result := filter.Choose(a, isEven)
Enfoque alternativo: bucles For
Si bien el paquete de filtro proporciona comodidad, es importante tener en cuenta que el uso de bucles for tradicionales sigue siendo una opción viable y eficiente. Los bucles for de Go ofrecen flexibilidad y oportunidades de optimización.
for i := range a { if someCondition { result = append(result, a[i]) } }
Conclusión
A pesar de la falta de sintaxis de comprensión de listas nativa en Go, el paquete de filtro y los bucles for ofrecen soluciones sólidas para filtrar y transformar listas. Si bien el paquete de filtros proporciona una sintaxis concisa, los bucles for siguen siendo una alternativa eficaz y eficaz. En última instancia, la elección del enfoque dependerá de los requisitos específicos de su aplicación.
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