Junior — Middle
Ist es erlaubt, Daten an einen Kanal zu senden, der nicht für Lesen und Schreiben geöffnet ist?
sobes.tech KI
Antwort von AI
In Go ist es nicht möglich, Daten an einen Kanal zu senden, der nicht für das Schreiben geöffnet ist. Wenn der Kanal geschlossen ist (Schließen mit close(channel)), führt der Versuch, Daten zu senden, zu einem Panic (Laufzeitfehler).
Das Lesen aus einem geschlossenen Kanal ist jedoch möglich: Dabei gibt das Lesen den Nullwert des Kanaltyps und eine Flagge zurück, die angibt, dass der Kanal geschlossen ist.
Beispiel:
ch := make(chan int)
close(ch)
// Lesen aus einem geschlossenen Kanal ist sicher
value, ok := <-ch // ok == false
// Senden an einen geschlossenen Kanal löst einen Panic aus
ch <- 1 // panic: send on closed channel
Daher kann man nur in offene Kanäle Daten senden.