#### 定時器創建的三種方式
##### 方式1
```
time.Sleep(time.Second)
```
##### 方式2
```
fmt.Println("當前時間:", time.Now())
myTimer := time.NewTimer(time.Second*2)
nowTime := <- myTimer.C
fmt.Println("現在時間:", nowTime)
```
##### 方式3
```
nowTime2 := <- time.After(time.Second*3)
```
#### 重置和停止
```
//創建定時器
myTimer := time.NewTimer(time.Second*20)
//重置定時時長為1
myTimer.Reset(1*time.Second)
//定時器停止
myTimer.Stop()
```
####周期定時器
```
func main() {
quit := make(chan bool) // 創建一個判斷是否 終止的channel
fmt.Println("now: ", time.Now())
myTicker := time.NewTicker(time.Second) // 定義一個周期定時器
i := 0
go func() {
for {
nowTime := <-myTicker.C
i++
fmt.Println("nowTime:", nowTime)
if i == 3 {
quit <- true // 解除 主go程阻塞。
break // return // runtime.Goexit
}
}
}()
<-quit // 子go程 循環獲取 <-myTicker.C 期間,一直阻塞
}
```
- 認識Golang
- 環境配置
- 找不到包
- civil
- 語言基礎
- 執行流程
- 標準命令
- 輸入輸出
- 常量與變量
- 常量的定義和使用
- 變量
- 枚舉
- 數據類型
- 結構體
- 定義和使用
- 函數參數
- 普通數據類型
- 數值型
- 整型
- 浮點類型
- 布爾
- 字符
- 字符串
- 類型轉換
- 復雜數據類型
- 指針
- 定義和使用
- 空指針
- 野指針
- new
- 函數參數
- 數組
- 定義
- 切片
- 切片
- Map
- 定義和使用
- 流程控制
- if
- switch
- for
- break
- continue
- goto
- 函數
- 函數的定義與使用
- 不定參函數
- 函數返回值
- 作用域
- 匿名函數
- 閉包
- 傳值方式
- 常用函數
- 日期
- 包
- 面向對象
- 異常處理
- 文件讀寫
- 正則
- io
- Reader
- Writer
- 接口
- 測試
- os
- json
- Marshal
- Unmarshal
- 網絡編程
- go程
- runtime
- channel
- 無緩沖channel
- 關閉channel
- 單向channel
- 生產者消費者模型
- 定時器
- tcp
- tcp_server
- tcp_client
- tcp_server_并發
- tcp_client_并發
- 常用框架
- http
- server
- get
- head
- 爬蟲
- 百度貼吧
- 百度貼吧( 并發)
- GTK
- beego
- 環境搭建
- model
- 增
- 刪
- 改
- 查
- 模塊
- context
- httplib
- etcd
- 簡介
- 安裝
- 使用
- net/html
- goquery
- redis
- redigo
- 爬蟲
- gocolly/colly
- 區塊鏈
- 微服務
- 服務發現
- consul
- 簡介