How to check a channel is closed or not without reading it?

There’s no way to write a safe application where you need to know whether a channel is open without interacting with it.

The best way to do what you’re wanting to do is with two channels — one for the work and one to indicate a desire to change state (as well as the completion of that state change if that’s important).

Channels are cheap. Complex design overloading semantics isn’t.

[also]

<-time.After(1e9)

is a really confusing and non-obvious way to write

time.Sleep(time.Second)

Keep things simple and everyone (including you) can understand them.

Leave a Comment