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
}