![1.png](https://static.studygolang.com/190925/407fcf34e1c1afab30329d7b5d6fbbf6.png)
这段代码一直打印deault,不会进入 case time := <-Delay.C:
![2.png](https://static.studygolang.com/190925/0ecd86b5013fa1c7a3141efa08eaab63.png)
把select中的default干掉,就会打印时间。
请问这个是啥原因啊?
```
package main
import (
"fmt"
"time"
)
func main() {
times := 1 * time.Second
dd := time.NewTicker(times)
defer dd.Stop()
for {
//dd.Reset(times)
select {
case tt := <-dd.C:
fmt.Println(tt)
default:
fmt.Println("default")
}
}
}
```
```
➜ [/code/go/src/tools] go run del.go|grep -v 'default'
2019-09-26 14:13:07.884333 +0800 CST m=+1.003279203
2019-09-26 14:13:08.883453 +0800 CST m=+2.002433911
2019-09-26 14:13:09.884568 +0800 CST m=+3.003584212
```
#4
更多评论
很正常啊。。default本来就是这样用的啊。。上面case没有匹配的立即执行default里面的啊。
这个一般用于那种不想阻塞等待chan的场景,及chan里面有就处理,没有就走default啊。
#1
问题不在default这里 应该是你的 Delay.Reset(times) 搞的鬼 你把这个去掉试试
如果你想 实现一秒打印一次 那你应该用这个
```
time.NewTicker(times)
```
#2