Junior — Middle
Ποια συμπεριφορά αναμένεται αν προσπαθήσετε να κλείσετε ένα κανάλι που έχει ήδη κλείσει προηγουμένως;
sobes.tech AI
Απάντηση από AI
Στο Go, η προσπάθεια κλεισίματος ενός ήδη κλειστού καναλιού οδηγεί σε panic.
Το κανάλι μπορεί να κλείσει μόνο μία φορά, για να σηματοδοτήσει ότι δεν θα αποσταλούν περαιτέρω τιμές.
Αν καλέσετε close(ch) επανειλημμένα για το ίδιο κανάλι, το πρόγραμμα θα τερματίσει απότομα με σφάλμα.
Παράδειγμα:
ch := make(chan int)
close(ch) // σωστό
close(ch) // panic: close of closed channel
Επομένως, είναι σημαντικό να ελέγχετε ότι το κανάλι κλείνει μόνο μία φορά.