<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
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),表示不指定值,可以用於代替 *
Timer //時間到了產生一次事件 Ticker //時間到了迴圈產生事件
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) }
package main import ( "fmt" "time" ) //驗證time.NewTimer(),時間到了,只會響應一次 func main() { timer := time.NewTicker(1 * time.Second) for { <-timer.C fmt.Println("時間到") } }
結果:
時間到
時間到
時間到
時間到
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("時間到") }
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語言定時器的功能使用範例詳解的詳細內容,更多關於go語言定時器的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45