У меня есть такая структура:
type Notifications struct {
Id int
Start *time.Time
}
notifications := db.GetNotifications()
Так что теперь мне нужно отправлять эти уведомления всякий раз, когда время соответствует текущему времени.
1 2018-11-07 09:05:00
2 2018-11-07 09:05:00
3 2018-11-07 09:15:00
..
Самый простой способ сделать это с помощью тикера:
ticker := time.NewTicker(30 * time.Second)
defer ticker.Stop()
for {
<-ticker.C
alerts := []Notification
for _, n := range notifications {
if n.Start == // same year, month, day, hour and minute {
alerts = append(alerts, n)
}
}
sendNotifications(alerts)
// TODO mutate the notifications to avoid duplicatation sending
}
Есть ли более эффективный способ сделать это?
Каков наилучший способ сопоставления по времени, нужно ли мне сравнивать атрибуты time.Now (), такие как год, месяц, день, час и минута, в моем выражении if? то есть уведомление запускается, если были достигнуты год, месяц, день, час и минуты (игнорируются секунды и более)