go - N小时后如何调用函数X

标签 go time

func (timeTables) GetTimeTables(c echo.Context) error {

    resp, err := http.Get("url")
    if err != nil {
        log.Fatal(err)
    }

    body, err := ioutil.ReadAll(resp.Body)

    test := &models.MultiModel{}
    json.Unmarshal(body, &test)
    return c.JSON(http.StatusOK,"")
}

1小时后如何调用func GetTimeTables,我使用AferFunc,我想念什么?
func (timeTables) CallFunc() {
    time.AfterFunc(4*time.Hour, func() {
        GetTimeTables(c echo.Context)
    })
}

最佳答案

您的程序需要阻止,否则它将在触发AfterFunc之前退出。

尝试从此示例https://play.golang.org/p/_25RffWDyPV中删除 sleep 以进行查看。
GetTimeTables不是可以直接调用的函数,您需要将其作为timeTables对象的方法来调用。另外,如@icza所述,您应该将一个值传递给该函数。

这样的事情应该起作用:

func (t timeTables) CallFunc(c echo.Context) {
    time.AfterFunc(4*time.Hour, func() {
        t.GetTimeTables(c)
    })
}

关于go - N小时后如何调用函数X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59385310/

相关文章:

go - Go 方法中的默认值

go - 为什么结构内存大小与我的期望不一致?

Python datetime - 在使用 strptime 获取日、月、年之后设置固定的小时和分钟

javascript - 获取从星期日开始的周数

go - 如何从 golang 中的字段类型内部访问结构标记

ubuntu - Golang 时区解析未在 ubuntu 服务器上返回正确的区域

去不工作/从不同的地方去

go - gRPC 到远程服务器的带宽较慢

docker - 使用 Go 和 GoLand IDE 远程调试 HTTP 请求

linux - bash 脚本从文件中获取所花费的时间