我们常常需要在后面一个时刻运行 Go 代码,或者在某段时间间隔内重复运行。

Go 的内置 定时器 和 打点器 特性让这些很容易实现。我们将先学习定时器,然后再学习打点器

Example:

package main
import "fmt"
import "time" 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 stop.")
}
}

Result:

$go run example.go
Timer 1 expired.
Timer 2 stop.
第一个定时器将在程序开始后 ~2s 失效,但是第二个在它没失效之前就停止了。

坐标:  上一个例子  下一个例子

最新文章

  1. IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
  2. Gradle 10分钟上手指南
  3. [Python]新手写爬虫全过程(已完成)
  4. 在cxf中使用配置避免增加字段导致客户端必须更新、同步实体属性的问题
  5. sql批量获取wordpress所有留言者的邮件地址
  6. ERP_Oracle Fusion Application新一代ERP介绍
  7. [原创]Microsoft.AnalysisServices.ManagementDialogs.ServerPropertiesLanguagePanel 的类型初始值设定项引发异常
  8. 将string转换成UTF8在进行请求
  9. json &lt;---&gt;List集合,实体类 之间的相互转换
  10. Servlet的接口实现类
  11. C#。5 函数 类
  12. Hbase split的过程以及解发条件
  13. 利用MFC编写计算器
  14. Beta版本冲刺计划安排
  15. islider结合react的简单实用
  16. 使用lombok自动生成链式调用
  17. 学习ActiveMQ(七):JMS消息的事务管理
  18. Elasticsearch .net client NEST 5.x 使用总结
  19. spring mvc 简单的文件上传与下载
  20. Java 11 已发布,String 还能这样玩!

热门文章

  1. tar解压命令
  2. The list of list is modified unexpected, python
  3. Android逆向之旅---解析编译之后的AndroidManifest文件格式
  4. [WC2012]记忆中的水杉树
  5. 搭建maven本地仓库
  6. CentOS7.4伪分布式搭建 hadoop+zookeeper+hbase+opentsdb
  7. 交换机vlan配置
  8. Go-内存To Be
  9. upc组队赛16 Winner Winner【位运算】
  10. Github建站笔记