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
}