【发布时间】:2016-10-12 04:23:05
【问题描述】:
我这里是并发示例:https://tour.golang.org/concurrency/5
这是代码:
package main
import "fmt"
func fibonacci(c, quit chan int) {
x, y := 0, 1
for {
select {
case c <- x:
x, y = y, x + y
case <- quit:
fmt.Println("quit")
return
}
}
}
func main() {
c := make(chan int)
quit := make(chan int)
go func() {
for i := 0; i < 10; i++ {
fmt.Println(<- c)
}
quit <- 0
}()
fibonacci(c, quit)
}
这有很多让我感到困惑的地方,而这次旅行本身并没有说太多。它说 select 将等待通信操作,但在调用 fibonacci 之前,我真的不明白它如何应用于它发送到 goroutine 的函数。 fmt.Println 正在发送到频道 c,但我只是不明白为什么或如何这样做......
我对此有很多疑问,我希望在理解第一部分后一切都到位......
【问题讨论】: