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
}