Junior — Middle
Τι συμβαίνει αν προσπαθήσετε να διαβάσετε δεδομένα από ένα κανάλι που δεν έχει ακόμη αρχικοποιηθεί;
sobes.tech AI
Απάντηση από AI
Αν προσπαθήσετε να διαβάσετε δεδομένα από ένα κανάλι σε Go που δεν έχει αρχικοποιηθεί (δηλαδή, είναι nil), η λειτουργία ανάγνωσης θα μπλοκαριστεί για πάντα. Αυτό θα προκαλέσει το μπλοκάρισμα της goroutine που προσπαθεί να διαβάσει από αυτό το κανάλι, καθώς το κανάλι δεν υπάρχει και δεν μπορεί να μεταδώσει δεδομένα.
Παράδειγμα:
var ch chan int // ch είναι nil
func main() {
fmt.Println(<-ch) // μπλοκάρει για πάντα
}
Για να αποφύγετε αυτό, πρέπει να αρχικοποιήσετε το κανάλι με make, για παράδειγμα: ch := make(chan int).