Go語言 之time.Timer


package main

import (
    "fmt"
    "time"
)

func main() {
    //創建定時器,2秒后獲取
    timer := time.NewTimer(time.Second * 2)
    //獲取當前時間
    t1 := time.Now()
    //接收通道數據
    t2 := <-timer.C

    fmt.Println(t1)
    fmt.Println(t2)
    //結果為(相差兩秒):
    /*
        2019-07-04 13:59:33.7200299 +0800 CST m=+0.022983601
        2019-07-04 13:59:35.7206204 +0800 CST m=+2.023574101
    */

    timer2 := time.NewTimer(time.Second * 10)
    //重置定時器
    timer2.Reset(time.Second * 3)
    //獲取當前時間
    t3 := time.Now()
    fmt.Println(t3)
    t4 := <-timer2.C
    //停止定時器
    timer2.Stop()
    fmt.Println(t4)

    //定時執行一個函數
    timer3 := time.AfterFunc(time.Second*2, func() {
        fmt.Println("2秒函數執行了")
    })
    timer3.Reset(time.Second * 2)

    //延遲主協程的結束
    time.Sleep(time.Second * 3)
}

相關函數列表:

NewTimer()創建一個Timer,它會在最少過去時間段d后到期,向其自身的C字段發送當時的時間
AfterFunc()另起一個go程等待時間段d過去,然后調用f。它返回一個Timer,可以通過調用其Stop方法來取消等待和對f的調用。
Reset()使t重新開始計時,(本方法返回后再)等待時間段d過去后到期。如果調用時t還在等待中會返回真;如果t已經到期或者被停止了會返回假。
Stop()停止Timer的執行。如果停止了t會返回真;如果t已經被停止或者過期了會返回假。Stop不會關閉通道t.C,以避免從該通道的讀取不正確的成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM