Closing Go Channels
Let’s learn how to close the Go channels.
We'll cover the following
So far, we have seen basic usages of channels—this lesson presents the definition and the usage of nil
channels, signal channels, and buffered channels.
Closing a channel
It helps to remember that the zero value of the channel type is nil
, and that if we send a message to a closed channel, the program panics. However, if we try to read from a closed channel, we get the zero value of the type of that channel. So, after closing a channel, we can no longer write to it, but we can still read from it. To be able to close a channel, the channel must not be receive-only.
Additionally, a nil
channel always blocks, which means that both reading and writing from nil
channels block execution. This property of channels can be very useful when we want to disable a branch of a select
statement by assigning the nil
value to a channel variable. Finally, if we try to close a nil
channel, our program is going to panic.
Coding example
This is best illustrated in the closeNil.go
program:
Get hands-on with 1400+ tech skills courses.