Sobes.tech
Middle

Τι είναι το defer στο Go και πότε καλείται;

sobes.tech AI

Απάντηση από AI

Στη Go, η λέξη-κλειδί defer χρησιμοποιείται για την καθυστέρηση της κλήσης μιας λειτουργίας: θα εκτελεστεί μετά την ολοκλήρωση της περιβάλλουσας λειτουργίας, αλλά πριν από την έξοδό της.

Αυτό είναι χρήσιμο για την απελευθέρωση πόρων, το κλείσιμο αρχείων, την ξεκλείδωμα mutex και άλλες λειτουργίες καθαρισμού, διασφαλίζοντας ότι θα πραγματοποιηθούν ακόμη και σε περίπτωση σφαλμάτων ή πανικών.

Παράδειγμα:

func readFile() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close() // το αρχείο θα κλείσει στο τέλος της λειτουργίας

    // εργασία με το αρχείο
}

Εδώ, το file.Close() θα κληθεί αυτόματα κατά την έξοδο από το readFile, ανεξάρτητα από το πώς τελειώνει η λειτουργία.