golang - 与 gorutine 的僵局

下面的代码是将值放入通道并接收和打印的代码与您输入的一样多。我希望它可以工作,但发生了错误。


package main


import (

    "fmt"

    "time"

)


func main() {

    var ch chan int

    for i := 0; i < 3; i++ {

        go func(idx int) {

            ch <- (idx + 1) * 2

        }(i)

    }


    fmt.Println("result:", <-ch)

    fmt.Println("result:", <-ch)

    fmt.Println("result:", <-ch)

    //do other work

    time.Sleep(2 * time.Second)

}

在操场上测试 - https://go.dev/play/p/FFmoSMheNfu


GCT1015
浏览 82回答 1
1回答

收到一只叮咚

您正在使用零通道。类型声明还不够,需要使用make来初始化通道。ch&nbsp;:=&nbsp;make(chan&nbsp;int)https://go.dev/play/p/L1ewulPDYlS有一集 justforfunc解释了 nil 通道的行为方式以及它们有时有用的原因。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go