登录
首页 >  Golang >  Go问答

Golang 中午运行代码

来源:Golang技术栈

时间:2023-04-14 14:39:28 357浏览 收藏

大家好,今天本人给大家带来文章《Golang 中午运行代码》,文中内容主要涉及到golang,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

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

正确答案

所以你需要Interval Timer在每天中午运行一个功能,你可以使用:
timer.AfterFunc()time.Tick()time.Sleep()time.Ticker

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

示例代码使用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 

您可以将 main 更改为此(或您需要的任何东西):

func main() {
    go initNoon()

    // do normal task here:
    for {
        fmt.Println("do normal task here")
        time.Sleep(1 * time.Minute)
    }
}

使用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

使用time.Ticker

package main

import (
    "fmt"
    "sync"
    "time"
)

var ticker *time.Ticker = nil

func noonTask() {
    if ticker == nil {
        ticker = time.NewTicker(24 * time.Hour)
    }
    for {
        fmt.Println(time.Now())
        fmt.Println("do some job.")
        

并查看:
https ://github.com/jasonlvhit/gocron
[Golang - 如何在特定时间执行功能](https://stackoverflow.com/questions/33715842/golang- how-to-execute-function-at-specific-times)
[Golang:实现 cron / 在特定时间执行任务](https://stackoverflow.com/questions/19549199/golang-implementing-a- cron-executing-tasks-at-a-specific-time)

好了,本文到此结束,带大家了解了《Golang 中午运行代码》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>