问答

Go 并发 通道(channel) x, y := <-c, <-c // 这里为什么

作者:admin 2021-09-18 我要评论

package mainimport "fmt"func sum(s []int, c chan int) { sum := 0 for _, v := range s { sum += v } c - sum // 把 sum 发送到通道 c}func main() { s := []...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
package main

import "fmt"

func sum(s []int, c chan int) {
    sum := 0
    for _, v := range s {
        sum += v
    }
    c <- sum // 把 sum 发送到通道 c
}

func main() {
    s := []int{7, 2, 8, -9, 4, 0}

    c := make(chan int)

    go sum(s[len(s)/2:], c)
    go sum(s[:len(s)/2], c)
    x, y := <-c, <-c // 从通道 c 中接收

    fmt.Println(x, y, x+y)
    //x=-5 y=17 x+y=12  
    //这里为什么x得到是第二个通道的结果  而不是第一个
    
    
}

1584676982(1).jpg

###

复制运算符是右结合的运算符,右结合的运算符由右向左运算

###

协程哪一个会先发送是不一定的 ....

先启动的也不一定先执行完 ...

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • Go 并发 通道(channel) x, y := &

    Go 并发 通道(channel) x, y := &

  • react项目每次部署后都需要手动刷新页

    react项目每次部署后都需要手动刷新页

  • 在 Vue.js 中,组件里并不需要 reactiv

    在 Vue.js 中,组件里并不需要 reactiv

  • Golang 的 echo 框架中,接收 Json 数

    Golang 的 echo 框架中,接收 Json 数

腾讯云代理商
海外云服务器