Sobes.tech
Middle

Mi az a zárójel a Go-ban?

sobes.tech MI

Válasz az MI-től

A Go-ban a lezárás egy olyan függvény, amely "emlékszik" a környezetében lévő értékekre, még akkor is, ha a külső függvény befejeződött. Ez lehetővé teszi külső változók elfogását és belső használatát.

// Külső függvény
func makeCounter() func() int {
    count := 0 // Elfogandó változó

    // Belső függvény (lezárás)
    return func() int {
        count++ // Elfogjuk és módosítjuk a count-ot
        return count
    }
}

// Használati példa
func main() {
    counter1 := makeCounter() // Első lezárás létrehozása
    fmt.Println(counter1()) // Kimenet: 1
    fmt.Println(counter1()) // Kimenet: 2

    counter2 := makeCounter() // Második lezárás létrehozása (saját count-tal)
    fmt.Println(counter2()) // Kimenet: 1
}