Sobes.tech
Senior

Τι είναι το defer στο Go; Τι θα εμφανίσει ο κώδικας με δύο defer;

sobes.tech AI

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

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

Αν υπάρχουν πολλές δηλώσεις defer σε μια συνάρτηση, εκτελούνται με την αντίστροφη σειρά από αυτήν που δηλώθηκαν (στοίβα κλήσεων).

Παράδειγμα:

package main

import "fmt"

func main() {
    defer fmt.Println("Πρώτο defer")
    defer fmt.Println("Δεύτερο defer")
    fmt.Println("Κύριος κώδικας")
}

Η έξοδος θα είναι:

Κύριος κώδικας
Δεύτερο defer
Πρώτο defer

Δηλαδή, πρώτα εκτελείται ο κύριος κώδικας, και στη συνέχεια οι καθυστερημένες κλήσεις με την αντίστροφη σειρά.