## 一、概念
* Timer:时间到了,响应一次
* Ticker,不停地响应
## 二、Timer定时器实例
~~~
package main
import (
"time"
"fmt"
)
func main() {
////1.创建定时器
//timer1 := time.NewTimer(time.Second * 2)
////打印系统当前时间
//t1 := time.Now()
//fmt.Printf("t1:%v\n", t1)
//t2 := <-timer1.C
//fmt.Printf("t2:%v\n", t2)
//2.timer响应
//timer2 := time.NewTimer(time.Second)
//for {
// <-timer2.C
// fmt.Println("时间到")
//}
//3.timer延时
//time.Sleep(2 * time.Second)
//fmt.Println("2秒时间到")
//timer3 := time.NewTimer(3 * time.Second)
//<-timer3.C
//fmt.Println("3秒时间到")
//4.停止定时器
//timer4 := time.NewTimer(3 * time.Second)
//go func() {
// <-timer4.C
// fmt.Println("定时器时间到了")
//}()
////停止定时器
//stop := timer4.Stop()
//if stop {
// fmt.Println("timer4已经关闭")
//}
//for {
//}
//5.重置定时器
//timer5 := time.NewTimer(3 * time.Second)
//timer5.Reset(time.Second)
//fmt.Println(time.Now())
//fmt.Println(<-timer5.C)
//
//for {
//}
}
~~~
## 三、Ticker定时器实例
~~~
package main
import (
"time"
"fmt"
)
func main() {
////1.创建定时器
ticker := time.NewTicker(time.Millisecond)
i := 0
go func() {
for {
<-ticker.C
fmt.Println(<-ticker.C)
i++
fmt.Println("i=", i)
//停止定时器
if i == 5 {
ticker.Stop()
}
}
}()
for {
}
}
~~~
- 一、数组
- 二、切片
- 三、copy
- 四、MAP
- 五、结构体
- 六、结构体参数
- 七、面向”对象“
- 1、匿名字段
- 2、方法
- 3、包和封装
- 4、接口
- 5、异常处理
- 八、Json
- 九、文件操作
- 1、写文件
- 2、读取文件内容
- 3、拷贝文件
- 十、反射
- 1、查看类型,字段和方法
- 2、查看匿名字段
- 3、修改基本类型的值
- 4、修改结构体的值
- 5、调用方法
- 十一、并发编程
- 1、并行和并发
- 2、协程
- 3、runtime包
- 5、channel的使用
- 6、close
- 7、定时器
- 8、select
- 9、协程同步锁
- 十二、socket编程
- 十三、Http编程
- 十四、并发爬虫和数据处理
- 1、简易爬虫实例
- 2、并发爬取图片
- 3、读文件中的数据
- 4、数据清洗
- 其他
- 1、推荐文章