Sobes.tech
Junior — Middle

Vysvětlete mechanismus fungování uzávěrek v programování.

sobes.tech AI

Odpověď od AI

V programování je uzávěr (closure) funkce, která "pamatuje" a může používat proměnné z jejího vnějšího rozsahu, i když tato vnější funkce již dokončila vykonávání.

V jazyce Go jsou uzávěry často vytvářeny pomocí anonymních funkcí, které přistupují k proměnným z okolního kontextu. To umožňuje uchovávat stav mezi voláními funkce.

Příklad:

package main
import "fmt"

func čítač() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

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

Zde funkce čítač vrací uzávěr, který zvyšuje a vrací hodnotu count. Proměnná count je udržována v uzávěru mezi voláními.