Sobes.tech
Junior — Middle

Обяснете механизма на функциониране на затварянето в програмирането.

sobes.tech AI

Отговор от AI

В програмирането, затварянето (closure) е функция, която "помни" и може да използва променливи от външната си област, дори ако тази външна функция вече е приключила изпълнението си.

В Go, затварянията често се създават с помощта на анонимни функции, които имат достъп до променливи от околния контекст. Това позволява запазване на състоянието между извикванията на функцията.

Пример:

package main
import "fmt"

func брояч() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

func main() {
    c := брояч()
    fmt.Println(c()) // 1
    fmt.Println(c()) // 2
    fmt.Println(c()) // 3
}

Тук, функцията брояч връща затваряне, което увеличава и връща стойността на count. Променливата count се запазва в затварянето между извикванията.