Sobes.tech
Middle

Kas ir aizvēršana Go?

sobes.tech AI

Atbilde no AI

Aizvērums Go ir funkcija, kas "atceras" apkārtējās vides vērtības, pat pēc ārējās funkcijas pabeigšanas. Tas ļauj noķert ārējos mainīgos un izmantot tos iekšienē.

// Ārējā funkcija
func makeCounter() func() int {
    count := 0 // Noķerama mainīgā

    // Iekšējā funkcija (aizvērums)
    return func() int {
        count++ // Noķer un maina count
        return count
    }
}

// Piemērs izmantošanai
func main() {
    counter1 := makeCounter() // Izveido pirmo aizvērumu
    fmt.Println(counter1()) // Izvade: 1
    fmt.Println(counter1()) // Izvade: 2

    counter2 := makeCounter() // Izveido otro aizvērumu (ar savu count)
    fmt.Println(counter2()) // Izvade: 1
}