Sobes.tech
Middle

Τι είναι ο τελεστής defer στη γλώσσα Go;

sobes.tech AI

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

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

Αρχές λειτουργίας του defer:

  • Εκτελείται κατά την έξοδο από την τρέχουσα λειτουργία, είτε αυτή εκτελείται κανονικά είτε λόγω πανικού.
  • Πολλαπλά defer σε μια λειτουργία εκτελούνται με σειρά LIFO (Last-In, First-Out).
  • Είναι χρήσιμο για τον καθαρισμό πόρων, όπως το κλείσιμο αρχείων ή δικτυακών συνδέσεων.

Παράδειγμα χρήσης:

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Άνοιγμα αρχείου.")

	file, err := os.Open("example.txt")
	if err != nil {
		// Διαχείριση σφάλματος
		return
	}

	// Αναβολή κλεισίματος αρχείου
	defer file.Close()
	defer fmt.Println("Το αρχείο θα κλείσει.") // Αυτό το defer θα εκτελεστεί πρώτο (LIFO)

	fmt.Println("Επεξεργασία αρχείου...")

	// Επιπλέον εργασία με το αρχείο
}

Έξοδος προγράμματος:

Άνοιγμα αρχείου.
Επεξεργασία αρχείου...
Το αρχείο θα κλείσει.