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
}