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