go chan 实现斐波那契数列

package main

import "fmt"

func main()  {
	ch := make(chan int)
	q := make(chan int)

	go func(ch, q chan int) {
		for i := 0; i < 10; i++ {
			num := <-ch
			fmt.Println(num)
		}
		q <- 1
	}(ch, q)

	fibonacci := func(ch, q chan int) {
		x, y := 0, 1
		for {
			select {
			case ch <- x: // 写入
				x, y = y, x+y
				break // 你觉得是否会影响 for 语句的循环?
			case <-q: // 读取
				fmt.Println("quit")
				return
			}
		}
	}
	fibonacci(ch, q)
}

  

猜你喜欢

转载自www.cnblogs.com/smallleiit/p/13205327.html