Sobes.tech
Junior — Middle

Ποιος είναι ο ρόλος του τελεστή defer στη γλώσσα Go και ποια είναι τα πλεονεκτήματά του;

sobes.tech AI

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

Ο τελεστής defer στη γλώσσα Go χρησιμοποιείται για την εκτέλεση μιας λειτουργίας με καθυστέρηση μέχρι το τέλος της περιβάλλουσας λειτουργίας (συνήθως για απελευθέρωση πόρων ή εκτέλεση τελικών ενεργειών).

Πλεονεκτήματα του defer:

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

Παράδειγμα:

func readFile() error {
    file, err := os.Open("file.txt")
    if err != nil {
        return err
    }
    defer file.Close() // το αρχείο θα κλείσει κατά την έξοδο από τη λειτουργία

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

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