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
}