Senior
Was passiert beim Lesen und Schreiben in einem geschlossenen Kanal?
sobes.tech KI
Antwort von AI
In Go, beim Arbeiten mit Kanälen:
-
Lesen aus einem geschlossenen Kanal: Wenn der Kanal geschlossen ist und keine Daten enthält, gibt die Leseoperation den Nullwert des Kanaltyps und
falseim zweiten Rückgabewert zurück (falls verwendet), was auf das Schließen des Kanals hinweist. -
Schreiben in einen geschlossenen Kanal: Der Versuch, in einen geschlossenen Kanal zu schreiben, führt zu einem Panic (
panic). Dies ist ein Laufzeitfehler.
Beispiel:
ch := make(chan int)
close(ch)
// Lesen
v, ok := <-ch // ok == false, v == 0
// Schreiben
ch <- 1 // panic: send on closed channel
Daher kann man einen geschlossenen Kanal sicher lesen, solange Daten vorhanden sind, aber nicht darin schreiben.