登录
首页 >  Golang >  Go问答

golang - 与 gorutine 发生僵局

来源:stackoverflow

时间:2024-04-06 14:51:37 347浏览 收藏

从现在开始,努力学习吧!本文《golang - 与 gorutine 发生僵局》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

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

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


正确答案


您正在使用零通道。类型声明还不够,需要使用make来初始化通道。

ch := make(chan int)

https://go.dev/play/p/L1ewulPDYlS

有一个 episode of justforfunc 解释了 nil 通道的行为方式以及为什么它们有时很有用。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>