Sobes.tech
Junior — Middle

Izskaidrojiet slēdža darbības mehānismu programmēšanā.

sobes.tech AI

Atbilde no AI

Programmēšanā aizvērums (closure) ir funkcija, kas "atceras" un var izmantot ārējā apgabala mainīgos, pat ja šī ārējā funkcija jau ir pabeigusi izpildi.

Go valodā aizvērumi bieži tiek veidoti ar anonīmām funkcijām, kas piekļūst apkārtējā konteksta mainīgajiem. Tas ļauj saglabāt stāvokli starp funkcijas izsaukumiem.

Piemērs:

package main
import "fmt"

func skaitītājs() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

func main() {
    c := skaitītājs()
    fmt.Println(c()) // 1
    fmt.Println(c()) // 2
    fmt.Println(c()) // 3
}

Šeit funkcija skaitītājs atgriež aizvērumu, kas palielina un atgriež count vērtību. Mainīgais count tiek saglabāts aizvērumā starp izsaukumiem.