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
}