1、time.Sleep的作用是程序阻塞,延迟操作。
func func1() {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
time.Sleep(time.Second * 2)
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
}

2、time.NewTimer 定义定时器 ,程序阻塞,延迟操作。
time.NewTimer的原理是:
(1)提供一个channel;
(2)在定时时间到达之前,没有数据写入timer.C会一直阻塞;
(3)当定时时间到了,向channel写入值,阻塞解除;
(4)之后也可以从中读取数据。
func func2() {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
timer := time.NewTimer(time.Second * 3)
t := <-timer.C
fmt.Println(t)
}

3、time.After的原理与time.NewTimer相似,作用也是程序阻塞,延迟操作。
func func3() {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
<-time.After(time.Second * 2)
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
}

