Sobes.tech
Junior — Middle

Τι συμβαίνει αν προσπαθήσετε να κλείσετε ένα κανάλι που είναι ήδη κλειστό;

sobes.tech AI

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

Στη γλώσσα Go, η προσπάθεια να κλείσετε ένα ήδη κλειστό κανάλι θα οδηγήσει σε panic κατά την εκτέλεση του προγράμματος. Αυτό συμβαίνει επειδή η λειτουργία close() προορίζεται να κλείνει ένα κανάλι μόνο μία φορά, και το επανειλημμένο κλείσιμο θεωρείται σφάλμα.

Παράδειγμα:

ch := make(chan int)
close(ch)      // σωστό κλείσιμο
close(ch)      // θα προκαλέσει panic: close of closed channel

Για να αποφύγετε το panic, πρέπει να διασφαλίσετε ότι το κανάλι κλείνει μόνο μία φορά, για παράδειγμα, με πρόσθετη λογική ή συγχρονισμό.