當前位置: 首頁>>編程語言>>正文


Go語言教程:定時器

返回Go語言教程首頁

概念簡介

我們常常需要在後麵一個時刻運行 Go 語言代碼,或者在某段時間
間隔內重複運行。Go 的內置定時器打點器 特性讓這
些很容易實現。我們將先學習定時器,然後再學習打點器

例程代碼


package main

import "time"
import "fmt"

func main() {

    // 定時器表示在未來某一時刻的獨立事件。你告訴定時器
    // 需要等待的時間,然後它將提供一個用於通知的通道。
    // 這裏的定時器將等待 2 秒。
    timer1 := time.NewTimer(time.Second * 2)

    // `<-timer1.C` 直到這個定時器的通道 `C` 明確的發送了
    // 定時器失效的值之前,將一直阻塞。
    <-timer1.C
    fmt.Println("Timer 1 expired")

    // 如果你需要的僅僅是單純的等待,你需要使用 `time.Sleep`。
    // 定時器是有用原因之一就是你可以在定時器失效之前,取消這個
    // 定時器。這是一個例子
    timer2 := time.NewTimer(time.Second)
    go func() {
        <-timer2.C
        fmt.Println("Timer 2 expired")
    }()
    stop2 := timer2.Stop()
    if stop2 {
        fmt.Println("Timer 2 stopped")
    }
}

執行&輸出


// 第一個定時器將在程序開始後 ~2s 失效,但是第二個在它
// 沒失效之前就停止了。
$ go run timers.go
Timer 1 expired
Timer 2 stopped

課程導航

學習上一篇:Go語言教程:通道遍曆    學習下一篇:Go語言教程:打點器

相關資料

本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/timers

Go語言定時器

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4061.html,未經允許,請勿轉載。