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

devilzy2656 · · 1414 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

昨天开始看的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) } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1414 次点击  
加入收藏 微博
1 回复  |  直到 2015-10-22 05:39:58
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传