Middle
Σε ποια σειρά εκτελούνται οι καθυστερημένες λειτουργίες (defer) στο Go;
sobes.tech AI
Απάντηση από AI
Οι καθυστερημένες συναρτήσεις εκτελούνται με την αντίστροφη σειρά από αυτήν που ορίστηκαν, δηλαδή LIFO (Last-In, First-Out).
package main
import "fmt"
func main() {
defer fmt.Println("πρώτο") // Ορίστηκε τελευταίο
defer fmt.Println("δεύτερο") // Ορίστηκε προτελευταίο
defer fmt.Println("τρίτο") // Ορίστηκε πρώτο
}
Ως αποτέλεσμα, κατά την εκτέλεση αυτού του κώδικα, θα εμφανιστεί:
τρίτο
δεύτερο
πρώτο
Όταν βγείτε από το scope (συνάρτηση) όπου δηλώθηκε το defer, οι καθυστερημένες συναρτήσεις καλούνται με την αντίστροφη σειρά. Αυτό είναι χρήσιμο για την απελευθέρωση πόρων, το κλείσιμο αρχείων, την ξεκλείδωμα mutex και άλλες λειτουργίες καθαρισμού.