秒表
package main
import (
"fmt"
"time"
)
/*每秒大喊我要去浪,共9次,然后退出計時*/
func main() {
var tickerStopped = false
ticker := time.NewTicker(time.Second)
go func() {
time.Sleep(9 * time.Second)
ticker.Stop()
tickerStopped = true
}()
for {
if tickerStopped {
break
}
//每次阻塞1秒
<-ticker.C
fmt.Println("我要去浪")
}
fmt.Println("main over")
}
定時器
package main
import (
"fmt"
"os"
"time"
)
/*三秒后宣布*/
func main051() {
timer := time.NewTimer(3 * time.Second)
fmt.Println("計時開始", time.Now())
x := <- timer.C //時間管道
fmt.Println("引爆於", x)
fmt.Println("羅志祥的時間管理")
}
/*簡易實現方式*/
func main052() {
fmt.Println("計時開始", time.Now())
x:=<-time.After(3*time.Second)
fmt.Println("引爆於", x)
fmt.Println("羅志祥的時間管理")
}
/*定時器的終止*/
func main053() {
timer := time.NewTimer(5 * time.Second)
fmt.Println("計時開始",time.Now())
go func() {
time.Sleep(3*time.Second)
//停止計時器(永遠不會向timer.C中寫入數據了)
ok := timer.Stop()
if ok{
fmt.Println("炸彈已拆除")
os.Exit(0)
}
}()
//阻塞5秒
endTime := <-timer.C
fmt.Println("炸彈引爆於", endTime)
}
/*定時器重置*/
func main054() {
timer := time.NewTimer(5 * time.Second)
fmt.Println("計時開始",time.Now())
time.Sleep(time.Second)
//以當前時間為基准(而不是timer被創建的時間),將定時器設置為2秒
timer.Reset(2*time.Second)
//阻塞5秒
endTime := <-timer.C
fmt.Println("炸彈引爆於", endTime)
}
/*爆炸后重置定時器*/
func main() {
timer := time.NewTimer(3 * time.Second)
fmt.Println("計時開始",time.Now())
//睡眠期間,timer.C已經被寫入時間
time.Sleep(5*time.Second)
//以當前時間為基准(而不是timer被創建的時間),將定時器設置為2秒
timer.Reset(2*time.Second)
//阻塞5秒
endTime := <-timer.C
fmt.Println("炸彈引爆於", endTime)
}