Angenommen, wir haben mehrere Benachrichtigungsquellen (Kanäle) und möchten einige ähnliche Aufgaben bei einigen dieser Benachrichtigungsereignisse ausführen. Betrachten wir zum Beispiel den Fall, in dem wir alle 10 Minuten doSomething()
anrufen und auch auf Anfrage des Benutzers. Eine mögliche Implementierung in Go könnte etwa so aussehen:Go-Sprache - Ausführen desselben Codes für mehrere ausgewählte Fälle
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()
}
}
Was wären andere, vielleicht bessere Möglichkeiten, um eine ähnliche Funktionalität zu erreichen?
'gehen fmt 'ist dein bester Freund, bitte benutze es. – OneOfOne