秒表
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)
}