Middle
Τι είναι το defer και για ποιο λόγο χρησιμοποιείται; Σε ποια σειρά εκτελούνται οι κλήσεις defer αν υπάρχουν πολλές στην ίδια λειτουργία;
sobes.tech AI
Απάντηση από AI
Στη Go, η λέξη-κλειδί defer χρησιμοποιείται για την καθυστέρηση της κλήσης μιας συνάρτησης: θα εκτελεστεί μετά την ολοκλήρωση της περιβάλλουσας συνάρτησης, αλλά πριν από την επιστροφή της. Αυτό είναι χρήσιμο για την απελευθέρωση πόρων, το κλείσιμο αρχείων, την ξεκλείδωμα mutex και άλλες λειτουργίες καθαρισμού.
Αν σε μια συνάρτηση υπάρχουν πολλαπλές κλήσεις defer, εκτελούνται με αντίστροφη σειρά από την δήλωσή τους (στοίβα). Δηλαδή, το τελευταίο defer που δηλώθηκε θα εκτελεστεί πρώτο.
Παράδειγμα:
func παράδειγμα() {
defer fmt.Println("Πρώτο defer")
defer fmt.Println("Δεύτερο defer")
fmt.Println("Στο σώμα της συνάρτησης")
}
// Η έξοδος θα είναι:
// Στο σώμα της συνάρτησης
// Δεύτερο defer
// Πρώτο defer