Sobes.tech
Junior — Middle

Ποια συμπεριφορά αναμένεται αν προσπαθήσετε να κλείσετε ένα κανάλι που έχει ήδη κλείσει προηγουμένως;

sobes.tech AI

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

Στο Go, η προσπάθεια κλεισίματος ενός ήδη κλειστού καναλιού οδηγεί σε panic.

Το κανάλι μπορεί να κλείσει μόνο μία φορά, για να σηματοδοτήσει ότι δεν θα αποσταλούν περαιτέρω τιμές.

Αν καλέσετε close(ch) επανειλημμένα για το ίδιο κανάλι, το πρόγραμμα θα τερματίσει απότομα με σφάλμα.

Παράδειγμα:

ch := make(chan int)
close(ch)       // σωστό
close(ch)       // panic: close of closed channel

Επομένως, είναι σημαντικό να ελέγχετε ότι το κανάλι κλείνει μόνο μία φορά.