(18条消息) Go语言自学系列 | golang并发编程之Timer_COCOgsta的博客-CSDN博客



Go语言自学系列 | golang并发编程之Timer

COCOgsta 已于 2022-04-09 20:58:42 修改 188 收藏
分类专栏: 视频学习笔记 文章标签: golang go

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客


Timer顾名思义,就是定时器的意思,可以实现一些定时操作,内部也是通过channel来实现的。

实例演示

  1. 1
    package main
  2. 2
  3. 3
    import (
  4. 4
    "fmt"
  5. 5
    "time"
  6. 6
    )
  7. 7
  8. 8
    func main() {
  9. 9
    timer1 := time.NewTicker(time.Second * 2)
  10. 10
    t1 := time.Now()
  11. 11
    fmt.Printf("t1: %v\n", t1)
  12. 12
  13. 13
    t2 := <-timer1.C
  14. 14
    fmt.Printf("t2: %v\n", t2)
  15. 15
  16. 16
    //如果只是想单纯的等待的话,可以使用time.Sleep来实现
  17. 17
    timer2 := time.NewTimer(time.Second * 2)
  18. 18
    <-timer2.C
  19. 19
    fmt.Println("2s后")
  20. 20
  21. 21
    time.Sleep(time.Second * 2)
  22. 22
    fmt.Println("再一次2s后")
  23. 23
  24. 24
    <-time.After(time.Second * 2) // time.After函数的返回值是chan Time
  25. 25
    fmt.Println("再再一次2s后")
  26. 26
  27. 27
    timer3 := time.NewTimer(time.Second)
  28. 28
    go func() {
  29. 29
    <-timer3.C
  30. 30
    fmt.Println("Timer 3 expired")
  31. 31
    }()
  32. 32
  33. 33
    stop := timer3.Stop() //停止定时器
  34. 34
    阻止timer事件发生,当该函数执行后,timer计时器停止,相应的事件不再执行
  35. 35
    if stop {
  36. 36
    fmt.Println("Timer 3 stopped")
  37. 37
    }
  38. 38
  39. 39
    fmt.Println("before")
  40. 40
    timer4 := time.NewTimer(time.Second * 5) // 原来设置5s
  41. 41
    timer4.Reset(time.Second * 1) // 重新设置时间,即修改NewTimer的时间
  42. 42
    <- timer4.C
  43. 43
  44. 44
    }
  45. 45

运行结果

  1. 1
    [Running] go run "d:\SynologyDrive\软件开发\go\golang入门到项目实战\goproject\360duote.com\pro01\test.go"
  2. 2
    t1: 2022-03-08 10:02:34.7087142 +0800 CST m=+0.005594501
  3. 3
    t2: 2022-03-08 10:02:36.7141187 +0800 CST m=+2.010999001
  4. 4
    2s
  5. 5
    再一次2s
  6. 6
    再再一次2s
  7. 7
    Timer 3 stopped
  8. 8
    before


yg9538 July 22, 2022, 10:48 p.m. 542 收藏文档