Junior — Middle
Σε ποιο σημείο του κώδικα πρέπει να κλείσετε το κανάλι;
sobes.tech AI
Απάντηση από AI
Στο Go, το κανάλι πρέπει να κλείνει στο σημείο όπου δημιουργείται και όπου δεν προγραμματίζεται πλέον η αποστολή δεδομένων. Συνήθως, το κάνει ο αποστολέας για να σηματοδοτήσει στους παραλήπτες ότι δεν θα υπάρξουν άλλα δεδομένα.
Σημαντικό:
- Οι παραλήπτες μπορούν να ελέγχουν το κλείσιμο του καναλιού κατά την ανάγνωση.
- Μόνο ο αποστολέας πρέπει να κλείνει το κανάλι για να αποφευχθεί πανικός.
Παράδειγμα:
ch := make(chan int)
func() {
defer close(ch) // κλείνουμε το κανάλι μετά την αποστολή όλων των δεδομένων
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // λαμβάνουμε δεδομένα μέχρι να κλείσει το κανάλι
}