select in Go can include a default case when there is no other available communication. A default case makes
In our Haskell-version
select, we can simply add an operation to the end of our list which never blocks.
select [ readTQueue c >>= (\i -> return $ do -- use i ) , return $ do -- if `readTQueue c` block ]
The sample code on the right side also implements functions similar to
time.After from Go.