Go 定时器(timer)

Go 定时器(timer),第1张

创建一个定时器:
package main

import (
    "fmt"
    "time"
)

func main() {
    timer := time.NewTimer(time.Second*3)  // 3秒定时器
    fmt.Printf("timertype: ", timer)
    
    fmt.Println(time.Now())  // 当前时间

    // 停止定时器
    //timer.Stop()

    c := <- timer.C
    fmt.Println(<-ch)  // 从通道获取时间
}
重置定时器:
package main

import (
    "fmt"
    "time"
)

func main() {
    timer := time.NewTimer(time.Second*3)  // 3秒定时器
    fmt.Printf("timertype: ", timer)
    
    fmt.Println(time.Now())  // 当前时间

    for i:=0;i<3;i++ {
        c := <- timer.C
        fmt.Println(<-ch)  // 从通道获取时间
        timer.Reset(time.Second*3)  // 重置定时器
    }
}
延时回调函数(AfterFunc):
package main

import (
    "fmt"
    "time"
)

func mian() {
    exit := make(chan bool)

    fmt.Println("start...")
    time.AfterFunc(time.Second*3, func() {
        fmt.Print("延时回调函数执行")
        exit <- true
    })

    <-exit  // 等待回调函数结束
}
定时任务:
package main

import (
    "fmt"
    "time"
)

func main() {  
    ticker := time.NewTicker(time.Second)   // 打点器,每秒执行一次
    stoper := time.NewTimer(time.Second * 5)  // 定时器,5秒后退出

    var i int
    for {
        select {
        case <- stoper.C:
            fmt.Println("stop")
            goto Stop
        
        case <-ticker.C:
            i++
            fmt.Println("tick:", i)
        }
    }

    Stop:
    fmt.Println("主程序结束")
}
时间差(since):
package main 

import (
    "fmt"
)

func main() {
    startTime := time.Now().Unix()
    time.Sleep(time.Second*3)

    //时间差
    fmt.Println(time.Since(startTime))
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/989737.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存