複数の通知ソース(チャネル)があり、これらの通知イベントのいくつかで同様のタスクを実行すると仮定します。たとえば、doSomething()
を10分ごとに呼び出す場合と、ユーザーからの要求があった場合を考えてみましょう。 Goの実装は次のようなものになる可能性があります。Go言語 - 複数の選択ケースで同じコードを実行する
var ticker = time.NewTicker(10*time.Minute)
nowDoSomething := make(chan time.Time, 1)
for {
select {
case <-ticker.C:
nowDoSomething<-time.Now()
case <-userReq: // some channel activated occasionally
nowDoSomething<-time.Now()
case <-nowDoSomething:
doSomething()
}
}
同様の機能を実現する他の方法はおそらく良いでしょうか?
'FMTを行くを選択あなたの親友です、それを使用してください。 – OneOfOne