在Golang中午运行代码

在Golang中午运行代码,go,time,automation,Go,Time,Automation,是否可以每天中午执行代码?程序在其运行时间的其余部分处理用户输入,但需要在中午运行函数以输出一些文本。最有效的方法是什么?因此您需要间隔计时器在每天中午运行一个功能,您可以使用: timer.AfterFunc()或time.Tick()或time.Sleep()或time.Ticker 首先,当程序启动时,计算启动时间到下一个中午的时间间隔,并使用一些等待(例如,time.Sleep或…),然后使用24*time.Hour间隔作为下一个时间间隔 使用time.Sleep的示例代码: 主程序包

是否可以每天中午执行代码?程序在其运行时间的其余部分处理用户输入,但需要在中午运行函数以输出一些文本。最有效的方法是什么?

因此您需要间隔计时器在每天中午运行一个功能,您可以使用:
timer.AfterFunc()
time.Tick()
time.Sleep()
time.Ticker

首先,当程序启动时,计算启动时间到下一个中午的时间间隔,并使用一些等待(例如,
time.Sleep
或…),然后使用
24*time.Hour
间隔作为下一个时间间隔

使用
time.Sleep的示例代码

主程序包
输入“fmt”
导入“时间”
func noonTask(){
fmt.Println(time.Now())
fmt.Println(“做点工作”)
}
func initNoon(){
t:=时间。现在()
n:=时间日期(t.年(),t.月(),t.日(),12,0,0,0,t.地点())
d:=n.Sub(t)
如果d<0{
n=n.Add(24*time.Hour)
d=n.Sub(t)
}
为了{
时间。睡眠(d)
d=24*时间。小时
努坦塔斯克()
}
}
func main(){
正午
}
您可以将main更改为此(或任何您需要的内容):

func main(){
开始
//在此处执行正常任务:
为了{
fmt.Println(“在此执行正常任务”)
时间。睡眠(1*时间。分钟)
}
}
使用计时器.AfterFunc:

主程序包
进口(
“fmt”
“同步”
“时间”
)
func noonTask(){
fmt.Println(time.Now())
fmt.Println(“做点工作”)
timer.AfterFunc(duration(),noonTask)
}
func main(){
timer.AfterFunc(duration(),noonTask)
工作组.添加(1)
//在这里执行正常任务
wg.Wait()
}
func duration()time.duration{
t:=时间。现在()
n:=时间日期(t.年(),t.月(),t.日(),12,0,0,0,t.地点())
如果t在(n)之后{
n=n.Add(24*time.Hour)
}
d:=n.Sub(t)
返回d
}
var wg sync.WaitGroup
使用
time.Ticker

主程序包
进口(
“fmt”
“同步”
“时间”
)
var ticker*time.ticker=nil
func noonTask(){
如果股票代码==nil{
ticker=time.NewTicker(24*time.Hour)
}
为了{
fmt.Println(time.Now())
fmt.Println(“做点工作”)

有没有处理DST时间变化的方便方法?