Sobes.tech
Junior — Middle

Explicați mecanismul de funcționare a closure-urilor în programare.

sobes.tech AI

Răspuns de la AI

În programare, o închidere (closure) este o funcție care "își amintește" și poate utiliza variabile din domeniul său exterior, chiar dacă această funcție externă a terminat deja execuția.

În Go, închiderea este adesea creată folosind funcții anonime care accesează variabile din contextul înconjurător. Acest lucru permite păstrarea stării între apelurile funcției.

Exemplu:

package main
import "fmt"

func contor() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

func main() {
    c := contor()
    fmt.Println(c()) // 1
    fmt.Println(c()) // 2
    fmt.Println(c()) // 3
}

Aici, funcția contor returnează o închidere care crește și returnează valoarea lui count. Variabila count este păstrată în închidere între apeluri.