Middle
Wie löst man Panik aus, wenn man mit einem Kanal arbeitet? Was passiert bei Operationen mit einem nil-Kanal und einem geschlossenen Kanal?
sobes.tech KI
Antwort von AI
In Go tritt bei der Arbeit mit Kanälen in folgenden Fällen ein Panik auf:
- Das Senden eines Werts an einen geschlossenen Kanal (
chan <- value) verursacht eine Panik. - Das Schließen eines bereits geschlossenen Kanals (
close(chan)) verursacht eine Panik.
Bezüglich nil-Kanälen:
- Sende- und Empfangsoperationen mit nil-Kanälen blockieren dauerhaft (Deadlock), verursachen aber keinen Panik.
Beispiel:
var ch chan int // nil-Kanal
// <-ch // blockiert dauerhaft
// ch <- 1 // blockiert dauerhaft
ch = make(chan int)
close(ch)
// ch <- 1 // Panic: Senden auf geschlossenen Kanal
close(ch) // Panic: Schließen eines bereits geschlossenen Kanals