昨天开始看的go,今天看到go语言开启轻量级线程和channel的使用方法。但是有一点疑问,求解,具体如下:
```golang
package main
import "fmt"
func sum(a []int, c chan int) {
sum := 0
for _, v := range a {
sum += v
}
c <- sum
}
func main() {
channl := make(chan int, 10)
go fibonacci(cap(channl), channl)
//为什么下面这两段话必须放在for循环里面才可以运行通过?
//按照现在的代码顺序,应该是先执行这两句话之后,才会执行for循环啊;
//channel未关闭前就应该执行到了,但是放在for循环前缺编译不过,求解答---
v, ok := <-channl
fmt.Println("channl status is:", v, ok)
for i := range channl {
fmt.Println("print---", i)
}
}
func fibonacci(n int, c chan int) {
x, y := 0, 1
for i := 0; i < n; i++ {
c <- x
fmt.Println("set---", x)
x, y = y, x+y
}
close(c)
fmt.Println("close---")
v, ok := <-c
fmt.Println("c status is:", v, ok)
}
```