typestar

Clausuras en Go

Un valor función captura las variables que usa, no sus valores.

func counter(start int) func() int {
    count := start
    return func() int {
        count++
        return count
    }
}

func adders() []int {
    var funcs []func() int
    for i := 1; i <= 3; i++ {
        funcs = append(funcs, func() int { return i * 10 })
    }

    var out []int
    for _, f := range funcs {
        out = append(out, f())
    }
    return out
}

Cómo funciona

  1. Cada llamada a la función externa recibe su propio estado capturado.
  2. Devolver una clausura es como Go escribe un contador o un generador.
  3. Desde Go 1.22 cada iteración del bucle tiene su propia variable.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
301
Tokens
99
Ritmo de tres estrellas
90 tpm

Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 66 segundos.

Escribe este fragmento

Paso 3 de 6 en Funciones; paso 12 de 30 en Fundamentos del lenguaje.

← Anterior Siguiente →