Sobes.tech
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 false im 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.