select中default的疑惑

netaxcess · · 1834 次点击
fenglangjuxu
出售域名 http://letsgo.xin
``` 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
更多评论
jan-bar
想要拥有,必定付出。
很正常啊。。default本来就是这样用的啊。。上面case没有匹配的立即执行default里面的啊。 这个一般用于那种不想阻塞等待chan的场景,及chan里面有就处理,没有就走default啊。
#1
fenglangjuxu
出售域名 http://letsgo.xin
问题不在default这里 应该是你的 Delay.Reset(times) 搞的鬼 你把这个去掉试试 如果你想 实现一秒打印一次 那你应该用这个 ``` time.NewTicker(times) ```
#2