Timers and tickers allow you to do things in the future and do things periodically. We only looked at a few use cases here. They are versatile tools that show up quite often in unexpected places. The Go runtime provides extremely efficient implementations of these tools. You need to be careful, though because they invariably complicate the flow. Make sure to close your tickers.
In the remaining chapters, we will start putting things together and look at some real-life use cases for concurrency patterns.