package main
import "fmt"
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 } } } 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) }
有疑问加站长微信联系(非本文作者)

这个是example里面的代码吧。程序从mian开始,走到20行开了一个协程,然后直接就走26行去了,调用函数fibonacci,在这个函数中一个for然后不断在里面跑,等着协程通过通道把值给过来,当通道quit给值过来的时候return,fibonacci函数返回,程序结束。这么说应该明白吧
接触go不到2周,属于学习摸索阶段,如果有错的话希望楼下的大神轻喷
那这个协成中的for循环 和 fibonacci 函数中的for循环 是怎么交叉执行的呢
你把这个看看http://studygolang.com/articles/3098,基本就明白是怎么回事了
http://studygolang.com/articles/3098