time.Timer は使ってますか? とても基本的な要素なのですが意外と正しい使い方は難しいのです。 つい先日ハマった事例とともにその正しい使い方を紹介します。 この記事は Go Advent Calendar 2019 の21日目の記事です。 皆さんは time.Timer は使ってますか? Timer は指定時間経過後に C <-chan Time に現在時刻が 1回だけ投入されるという極めてシンプルな型です。 メソッドも Stop() と Reset() の2つだけと少なくシンプルです。 そう…シンプルなのですが正しく使うには2つほど大事な注意事項があります。 この記事ではそれらを解説します。 TL;DR time.Timer#Stop() 後に time.Timer.C を読み捨てなければいけない場合がある