Middle
Hoe veroorzaak je paniek bij het werken met een kanaal? Wat gebeurt er bij operaties met een nil-kanaal en een gesloten kanaal?
sobes.tech AI
Antwoord van AI
In Go treedt bij het werken met kanalen een panic op in de volgende gevallen:
- Het verzenden van een waarde naar een gesloten kanaal (
chan <- value) veroorzaakt een panic. - Het sluiten van een al gesloten kanaal (
close(chan)) veroorzaakt een panic.
Wat nil-kanalen betreft:
- Verzenden en ontvangen op een nil-kanaal blokkeren voor altijd (deadlock), maar veroorzaken geen panic.
Voorbeeld:
var ch chan int // nil-kanaal
// <-ch // blokkeert voor altijd
// ch <- 1 // blokkeert voor altijd
ch = make(chan int)
close(ch)
// ch <- 1 // panic: verzenden op gesloten kanaal
close(ch) // panic: sluiten van een al gesloten kanaal