我一定缺少关于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) } }
您的程序在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