91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言定時器Timer及Ticker怎么使用

發布時間:2022-04-15 10:28:26 來源:億速云 閱讀:223 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“go語言定時器Timer及Ticker怎么使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“go語言定時器Timer及Ticker怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

定時器1-"*/5 * * * * *"

package main
import (
	"fmt"

	"github.com/robfig/cron"
)
//主函數
func main() {
	cron2 := cron.New() //創建一個cron實例
	//執行定時任務(每5秒執行一次)
	err:= cron2.AddFunc("*/5 * * * * *", print5)
	if err!=nil{
		fmt.Println(err)
	}
	//啟動/關閉
	cron2.Start()
	defer cron2.Stop()
	select {
	//查詢語句,保持程序運行,在這里等同于for{}
	}
}
//執行函數
func print5()  {
	fmt.Println("每5s執行一次cron")
}

設置說明

 ┌─────────────second 范圍 (0 - 60)
 │ ┌───────────── min (0 - 59)
 │ │ ┌────────────── hour (0 - 23)
 │ │ │ ┌─────────────── day of month (1 - 31)
 │ │ │ │ ┌──────────────── month (1 - 12)
 │ │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to
 │ │ │ │ │ │                  Saturday)
 │ │ │ │ │ │
 │ │ │ │ │ │
 * * * * * *

星號(*) :表示 cron 表達式能匹配該字段的所有值。如在第5個字段使用星號(month),表示每個月

斜線(/):表示增長間隔,如第2個字段(minutes) 值是 3-59/15,表示每小時的第3分鐘開始執行一次,之后 每隔 15 分鐘執行一次(即 3(3+0*15)、18(3+1*15)、33(3+2*15)、48(3+3*15) 這些時間點執行),這里也可以表示為:3/15

逗號(,):用于枚舉值,如第6個字段值是 MON,WED,FRI,表示 星期一、三、五 執行

連字號(-):表示一個范圍,如第3個字段的值為 9-17 表示 9am 到 5pm 直接每個小時(包括9和17)

問號(?):只用于 日(Day of month) 和 星期(Day of week),表示不指定值,可以用于代替 *

定時器2-Timer-Ticker

Timer  //時間到了產生一次事件
Ticker  //時間到了循環產生事件

Timer-只執行一次

package main
import (
	"fmt"
	"time"
)
func main() {
	//創建一個定時器,設置時間為2s,2s后,往time通道寫內容(當前時間)
	timer := time.NewTimer(2 * time.Second)
	fmt.Println("當前時間:", time.Now())
	//2s后,往timer.C寫數據,有數據后,就可以讀取
	t := <-timer.C //channel沒有數據前后阻塞
	fmt.Println("t = ", t)
}

Ticker-循環執行

package main
import (
	"fmt"
	"time"
)
//驗證time.NewTimer(),時間到了,只會響應一次
func main() {
	timer := time.NewTicker(1 * time.Second)
	for {
		<-timer.C
		fmt.Println("時間到")
	}
}

結果:

時間到
時間到
時間到
時間到

Timer延時功能

time.NewTimer(2 * time.Second)  //相當于time.Sleep(2 * time.Second)
func main() {
	//延時2s后打印一句話
	timer := time.NewTimer(2 * time.Second)
	<-timer.C
	fmt.Println("時間到")
}
func main() {
	<-time.After(2 * time.Second) //定時2s,阻塞2s, 2s后產生一個事件,往channel寫內容
	fmt.Println("時間到")
}

停止和重置定時器

ok := timer.Reset(1 * time.Second) //重新設置為1s
timer.Stop() //停止定時器

停止:

func main() {
	timer := time.NewTimer(3 * time.Second)
	go func() {
		<-timer.C
		fmt.Println("子協程可以打印了,因為定時器的時間到")
	}()
	timer.Stop() //停止定時器
	for {
	}
}

重置:

func main() {
	timer := time.NewTimer(3 * time.Second)
	ok := timer.Reset(1 * time.Second) //重新設置為1s
	fmt.Println("ok = ", ok)
	<-timer.C
	fmt.Println("時間到")
}

定時器Ticker使用

package main
import (
	"fmt"
	"time"
)
func main() {
	ticker := time.NewTicker(1 * time.Second)
	i := 0
	for {
		<-ticker.C
		i++
		fmt.Println("i = ", i)
		if i == 5 {
			ticker.Stop()
			break
		}
	}
}

讀到這里,這篇“go語言定時器Timer及Ticker怎么使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

樟树市| 六盘水市| 徐汇区| 吴江市| 正安县| 白银市| 乐亭县| 嘉黎县| 通城县| 和龙市| 鄂托克前旗| 林芝县| 土默特右旗| 会东县| 江都市| 镇原县| 昌邑市| 道真| 金山区| 太康县| 吉木萨尔县| 汉川市| 昌平区| 昆山市| 十堰市| 马山县| 安福县| 云安县| 惠州市| 天峨县| 乐昌市| 庐江县| 大同市| 朝阳市| 霍城县| 巫溪县| 瓮安县| 波密县| 沈阳市| 久治县| 驻马店市|