1. 首页
  2. 主题
  3. Go基础

求解:有关channel与go的使用问题

devilzy2656 · · 1834 次点击
昨天开始看的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) } ```
我这里运行你的代码没问题啊 。 http://dwz.cn/24I0ML
#1

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中