23.channel与select
1. 示例代码
package chapter15
import (
"fmt"
)
func fibonacii(c, quit chan int) {
x, y := 1, 1
for {
select {
case c <- x:
// 如果c可写,则该case就会进来
x = y
y = x + y
case <-quit:
fmt.Println("quit")
return
}
}
}
func RunChannel04() {
c := make(chan int)
quit := make(chan int)
// sub go
go func() {
for i := 0; i < 6; i++ {
fmt.Println(<-c)
}
quit <- 0
}()
// main go
fibonacii(c, quit)
}
//执行结果
1
1
2
4
8
16
quit