为了账号安全,请及时绑定邮箱和手机立即绑定

发射所有goroutine后如何使用goroutine按顺序打印数字

发射所有goroutine后如何使用goroutine按顺序打印数字

Go
慕尼黑的夜晚无繁华 2022-06-06 17:04:58
在所有 goroutine bing 发出后,如何使用 goroutine 按顺序打印数字?这是随机打印数字的代码:func main() {    var wg sync.WaitGroup    wg.Add(10)    for i := 1; i <= 10; i++ {        go func(i int) {            defer wg.Done()            fmt.Printf("i = %d\n", i)        }(i)    }    wg.Wait()发出 goroutine 以打印如下数字,这不是我想要的解决方案。func main() {    var wg sync.WaitGroup    for i := 1; i <= 10; i++ {        wg.Add(1)        go func(i int) {            defer wg.Done()            fmt.Printf("i = %d\n", i)        }(i)        wg.Wait()    }我希望所有 goroutine 都被发出,然后让它们按顺序打印数字。
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

func main() {

    wg.Add(10)

    count := 10

    cBegins := make([]chan interface{}, count)

    for i := range cBegins {

        cBegins[i] = make(chan interface{})

    }

    go func() {

        cBegins[0] <- struct {}{}

    }()

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

        go func(i int) {

            defer wg.Done()

            <-cBegins[i]

            fmt.Printf("i = %d\n", i)

            if i < 9 {

                cBegins[i+1] <- struct {}{}

            }

        }(i)

    }


    wg.Wait()


}


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号