Heim >Backend-Entwicklung >Golang >Wie führe ich täglich mittags eine Go-Funktion aus, während gleichzeitige Benutzereingaben verarbeitet werden?
Code mittags in Golang ausführen
In diesem Szenario wollen wir jeden Tag mittags eine bestimmte Funktion ausführen und dabei Benutzereingaben verarbeiten der Rest der Programmausführung. Mehrere Ansätze können dies effektiv erreichen:
Intervall-Timer
Timer-Funktionen in Go ermöglichen es uns, Aufgaben in vordefinierten Intervallen auszuführen. Um täglich eine Funktion mittags zu planen, können wir Folgendes verwenden:
Berechnung des Intervalls
Um das Intervall zwischen der aktuellen Zeit und dem nächsten Mittag zu bestimmen, berechnen wir zunächst die verbleibende Zeit bis zum ersten Mittag danach Das Programm startet. Wir verwenden dann ein 24-Stunden-Intervall für nachfolgende Mittagsaufgaben.
Beispielcode mit time.Sleep:
package main import "fmt" import "time" func noonTask() { fmt.Println(time.Now()) fmt.Println("do some job.") } func initNoon() { t := time.Now() n := time.Date(t.Year(), t.Month(), t.Day(), 12, 0, 0, 0, t.Location()) d := n.Sub(t) if d < 0 { n = n.Add(24 * time.Hour) d = n.Sub(t) } for { time.Sleep(d) d = 24 * time.Hour noonTask() } } func main() { initNoon() }
Mit timer.AfterFunc:
package main import ( "fmt" "sync" "time" ) func noonTask() { fmt.Println(time.Now()) fmt.Println("do some job.") timer.AfterFunc(duration(), noonTask) } func main() { timer.AfterFunc(duration(), noonTask) wg.Add(1) // do normal task here wg.Wait() } func duration() time.Duration { t := time.Now() n := time.Date(t.Year(), t.Month(), t.Day(), 12, 0, 0, 0, t.Location()) if t.After(n) { n = n.Add(24 * time.Hour) } d := n.Sub(t) return d } var wg sync.WaitGroup
Zusätzlich Informationen
Das obige ist der detaillierte Inhalt vonWie führe ich täglich mittags eine Go-Funktion aus, während gleichzeitige Benutzereingaben verarbeitet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!