Sobes.tech
Senior

What happens if you try to read from a closed channel?

sobes.tech AI

Answer from AI

If you try to read from a closed channel in Go, the read operation will not block and will return the zero value of the channel's type along with a flag indicating that the channel is closed.

For example:

ch := make(chan int)
close(ch)

v, ok := <-ch
fmt.Println(v, ok) // Will print: 0 false

The value ok == false means that the channel is closed and will no longer send values. This allows for proper handling of the channel closure during reading.

If you read from a closed channel without checking ok, you may get zero values, which can sometimes lead to logical errors if the channel closure is not taken into account.