Sobes.tech
Middle

¿Qué es un cierre en Go?

sobes.tech AI

Respuesta de la IA

El cierre en Go es una función que "recuerda" los valores del ámbito circundante, incluso después de que la función exterior ha terminado. Esto permite capturar variables externas y usarlas dentro de la función.

// Función exterior
func makeCounter() func() int {
    count := 0 // Variable que será capturada

    // Función interna (cierre)
    return func() int {
        count++ // Capturamos y modificamos count
        return count
    }
}

// Ejemplo de uso
func main() {
    counter1 := makeCounter() // Creamos el primer cierre
    fmt.Println(counter1()) // Salida: 1
    fmt.Println(counter1()) // Salida: 2

    counter2 := makeCounter() // Creamos un segundo cierre (con su propio count)
    fmt.Println(counter2()) // Salida: 1
}