Middle+
Wer soll den Kanal schließen - der Schriftsteller oder der Leser?
sobes.tech KI
Antwort von AI
In Go sollte der Kanal vom Sender (sender), nicht vom Empfänger (receiver), geschlossen werden. Das Schließen eines Kanals signalisiert, dass keine Werte mehr gesendet werden, und die Leser können das Lesen korrekt beenden, wenn sie den geschlossenen Kanal erkennen.
Wenn der Leser den Kanal schließt und der Sender weiterhin versucht zu senden, führt dies zu einem Panic. Daher liegt die Verantwortung für das Schließen des Kanals beim Schreibenden.
Beispiel:
ch := make(chan int)
func() {
defer close(ch) // der Sender schließt den Kanal
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // der Leser liest bis zum Schließen
}