当我尝试打印时:
fmt.Println(c <- x)在下面代码块中的 for 循环之前查看“c <- x”将评估为什么,它收到了错误消息:
./select.go:7: 发送语句 c <- x 用作值;使用 select 进行非阻塞发送
如果发送操作成功,“c <- x”是否被评估为真?为什么 Go 只允许你在 select 语句中的 case 语句中使用 send 语句的值(也就是 "c <- x" 的值)?
func fibonacci(c, quit chan int) {
x, y := 1, 1
for {
select {
case c <- x:
x, y = y, x + y
case <-quit:
fmt.Println("quit")
return
}
}
}
谢谢