Sobes.tech
Middle

Какво е затваряне в Go?

sobes.tech AI

Отговор от AI

Затваряне в Go е функция, която "помни" стойностите от околната среда, дори след като външната функция е приключила. Това позволява да се улавят външни променливи и да се използват вътре в нея.

// Външна функция
func makeCounter() func() int {
    count := 0 // Променлива, която ще бъде уловена

    // Вътрешна функция (затваряне)
    return func() int {
        count++ // Улавяме и променяме count
        return count
    }
}

// Пример за използване
func main() {
    counter1 := makeCounter() // Създаваме първото затваряне
    fmt.Println(counter1()) // Изход: 1
    fmt.Println(counter1()) // Изход: 2

    counter2 := makeCounter() // Създаваме второ затваряне (с собствен count)
    fmt.Println(counter2()) // Изход: 1
}