以下代码永远运行,而不是在开始后一秒钟停止。带有无限循环的 go 例程似乎阻止了另一个发送到超时通道。这正常吗?
func main(){
timeout:=make(chan int)
go func(){
time.SLeep(time.Second)
timeout<-1
}()
res:=make(chan int)
go func(){
for{
}
res<-1
}()
select{
case<-timeout:
fmt.Println("timeout")
case<-res:
fmt.Println("res")
}
}