接收信道中信息:
v,ok := <-ch
//通道接收不到数据后,ok便为false,这时候就可以用close()来关闭
实例:
package main
import (
"fmt"
)
func fibonacci(n int, c chan int) {
x, y := 0, 1
for i := 0; i < n; i++ {
c <- x
x, y = y, x+y
}
close(c)
}
func main() {
c := make(chan int, 10)
go fibonacci(cap(c), c)
//range 函数遍历每个从通道接收到的数据,因为c在发送完10个数据
//之后就关闭了通道,所有我们range函数在接收到10个数据之后
//就结束了。如果上边的c通道不关闭,那么range函数将不会结束
//从而在接收第11个数据的时候就阻塞了
for i := range c {
fmt.Println(i)
}
}