猿问

为什么我的 go 频道被屏蔽了?

似乎“复杂”( getC) 函数被阻塞了。我假设通道一旦被读取就会被销毁,因此我想知道如何sC与getC函数和main函数共享通道而不会陷入死锁(当前片段)


package main


func main() {


//simple function and complex function/channel


    sC := make(chan string)

    go getS(sC)


    cC := make(chan string)

    go getC(sC, cC)


//collect the functions result 


        s := <-sC

//do something with `s`. We print but we may want to use it in a `func(s)`

print(s)

//after a while we do soemthing with `c`

        c := <-cC



    print(c)

}


func getS(sC chan string) {

    s :=  " simple completed "

    sC <- s

}


func getC(sC chan string, cC chan string) {

//we do some complex stuff

  print("complex is not complicated\n")

//Now  we need the simple value so we try wait for the s channel.

    s := <-sC


    c := s + " more "

    cC <- c //send complex value

}



素胚勾勒不出你
浏览 186回答 3
3回答
随时随地看视频慕课网APP

相关分类

Go
我要回答