Sobes.tech
Senior

Is there currently a panic in writing to the closed channel?

sobes.tech AI

Answer from AI

In Go, panic on writing to a closed channel is possible and is a common mistake.

If you try to send a value to a channel that is already closed, a panic will occur with the message send on closed channel.

Example:

ch := make(chan int)
close(ch)
ch <- 1 // panic: send on closed channel

To avoid panic, you need to ensure that the channel is not closed before writing to it. This is usually achieved by:

  • Controlling the closing of the channel from one place (for example, only the sender closes the channel).
  • Using additional signals or flags to check the state.

Panic on writing to a closed channel is an error indicator in the synchronization logic between goroutines, and it should be caught and fixed at the application architecture level.