Sobes.tech
Junior — Middle

Πώς να προσδιορίσετε αν η εκτέλεση του τρέχοντος πλαισίου διακόπηκε ή ακυρώθηκε;

sobes.tech AI

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

Στην Go, για να προσδιορίσετε αν η εκτέλεση του τρέχοντος πλαισίου έχει διακοπεί ή ακυρωθεί, χρησιμοποιείται η μέθοδος Done() του αντικειμένου context.Context. Αυτή η μέθοδος επιστρέφει ένα κανάλι που κλείνει όταν το πλαίσιο ακυρώνεται. Ο έλεγχος γίνεται συνήθως έτσι:

select {
case <-ctx.Done():
    // Το πλαίσιο ακυρώθηκε ή η χρονική υπέρβαση έληξε
    err := ctx.Err() // context.Canceled ή context.DeadlineExceeded
    // Διαχείριση ακύρωσης
default:
    // Συνέχιση εργασίας
}

Έτσι, αν το κανάλι ctx.Done() είναι κλειστό, σημαίνει ότι πρέπει να διακοπεί η εκτέλεση.