Sobes.tech
Senior

Τι συμβαίνει κατά την εγγραφή σε ένα μη αρχικοποιημένο (nil) κανάλι;

sobes.tech AI

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

Στο Go, η εγγραφή σε ένα μη αρχικοποιημένο (nil) κανάλι οδηγεί σε μόνιμο μπλοκάρισμα της goroutine, καθώς το nil κανάλι δεν είναι έτοιμο να δεχτεί ή να στείλει δεδομένα.

Παράδειγμα:

var ch chan int // ch == nil

func main() {
    ch <- 1 // μπλοκάρεται για πάντα, επειδή το κανάλι είναι nil
}

Αυτή η συμπεριφορά χρησιμοποιείται μερικές φορές για δυναμική ενεργοποίηση/απενεργοποίηση καναλιών σε select, καθώς οι λειτουργίες με nil κανάλι ποτέ δεν εκτελούνται και μπλοκάρουν τη goroutine.