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
}