4 个回答

并发的协程执行是无须的。

先执行 sum(s[len(s)/2:], c) , c 里面第一个数据就是 -5 喽

你并不能保证前一个go程里的for循环比后一个go程里的先执行。

go那个goroutine先执行是调度器负责的,如果核心只有一个,那么一定是最后一个goroutine最先执行。

新手上路,请多包涵

有两种方式可以解决你的疑问:
1、你可以加个休眠时间:

    x := <-c 
    y := <-c
    time.Sleep(1)

2、一个一个取:

    go sum(s[:len(s)/2],c)
    x := <-c 
    go sum(s[len(s)/2:],c)    
    y := <-c
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题