Sobes.tech
Junior — Middle

Wyjaśnij mechanizm działania zamknięcia w programowaniu.

sobes.tech AI

Odpowiedź od AI

W programowaniu, zamknięcie (closure) to funkcja, która "pamięta" i może korzystać z zmiennych ze swojego zewnętrznego zakresu, nawet jeśli ta funkcja zewnętrzna już zakończyła wykonanie.

W Go zamknięcia są często tworzone za pomocą funkcji anonimowych, które odwołują się do zmiennych z otaczającego kontekstu. Pozwala to zachować stan między wywołaniami funkcji.

Przykład:

package main
import "fmt"

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

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

Tutaj funkcja licznik zwraca zamknięcie, które zwiększa i zwraca wartość count. Zmienna count jest zachowywana w zamknięciu między wywołaniami.