一尘不染

为什么此go代码不使用goroutine打印任何内容

go

我一定缺少关于goroutine的一些基本知识,但是我环顾四周,我看不到任何原因无法解决这个问题。

package main

import "fmt"

func main() {
    for i := 0; i < 20; i++ {
        //fmt.Println(i)
        go func(j int) {
            fmt.Println(j + 100)
        }(i)
    }
}

阅读 250

收藏
2020-07-02

共1个答案

一尘不染

您的程序在goroutines有机会运行之前已经完成。

这是带有WaitGroup的代码:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    for i := 0; i < 20; i++ {
        wg.Add(1)
        go func(j int) {
            defer wg.Done()
            fmt.Println(j + 100)
        }(i)
    }
    fmt.Println("Waiting...")
    wg.Wait()
    fmt.Println("Done.")
}

https://play.golang.org/p/lmCPU9-qkB

2020-07-02