Batch A Channel By Size Or Time in Go

Photo by Perry Grone on Unsplash

There are some cases where you need to read enough items from a channel to begin processing. However, you also want to a TTL to expire with a smaller batch if there are not more items for a while.

Here’s an example of streaming a channel of string into an output channel of []string that guarantees:

Try it now: https://play.golang.org/p/5NqYwehuxr-

The above example will halt when the channel is closed. It can also be written in a way that is context aware:

Now the stream can be stopped by either cancelling the context or closing the channel.

Try it now: https://play.golang.org/p/O7Wq1faP5qw

I’m a data nerd and TDD enthusiast originally from Sydney. Currently working for Uber in New York. My thoughts here are my own. 🤓 elliotchance@gmail.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store