Sobes.tech
Middle

How to trigger a panic when working with a channel? What happens with nil-channel and closed channel operations?

sobes.tech AI

Answer from AI

Panic in Go when working with channels occurs in the following cases:

  • Sending a value to a closed channel (chan <- value) causes a panic.
  • Closing an already closed channel (close(chan)) causes a panic.

Regarding nil-channels:

  • Send and receive operations with a nil-channel block forever (deadlock), but do not cause a panic.

Example:

var ch chan int // nil-channel

// <-ch // blocks forever
// ch <- 1 // blocks forever

ch = make(chan int)
close(ch)

// ch <- 1 // panic: send on closed channel

close(ch) // panic: close of closed channel
How to trigger a panic when working with a channel… - sobes.tech