"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 puedo lograr la funcionalidad de comprensión de listas en Go?

¿Cómo puedo lograr la funcionalidad de comprensión de listas en Go?

Publicado el 2024-11-10
Navegar:930

How Can I Achieve List Comprehension Functionality in Go?

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.

Ú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