Sobes.tech
Middle

Šta je zatvaranje u Go?

sobes.tech АИ

Одговор од АИ

Затвара у Го је функција која "сећа" вредности из окружења, чак и након што је спољашња функција завршена. Ово омогућава хватање променљивих изван и коришћење унутар.

// Спољашња функција
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
}