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, ανεξάρτητα από το πώς θα τερματίσει η λειτουργία.