Sobes.tech
Middle

Czym jest zamknięcie w Go?

sobes.tech AI

Odpowiedź od AI

Zamknięcie w Go to funkcja, która "zapamiętuje" wartości z otaczającego ją zakresu, nawet po zakończeniu funkcji zewnętrznej. Pozwala to na przechwytywanie zmiennych z zewnątrz i używanie ich wewnątrz.

// Funkcja zewnętrzna
func makeCounter() func() int {
    count := 0 // Zmienna, która będzie przechwycona

    // Funkcja wewnętrzna (zamknięcie)
    return func() int {
        count++ // Przechwytujemy i modyfikujemy count
        return count
    }
}

// Przykład użycia
func main() {
    counter1 := makeCounter() // Tworzymy pierwsze zamknięcie
    fmt.Println(counter1()) // Wypisze: 1
    fmt.Println(counter1()) // Wypisze: 2

    counter2 := makeCounter() // Tworzymy drugie zamknięcie (z własnym count)
    fmt.Println(counter2()) // Wypisze: 1
}