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

2.总结

posted @ 2021-10-09 19:31  可可逗豆  阅读(40)  评论(0)    收藏  举报