这个例子取自tour.golang.org/#63
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
输出
hello
world
hello
world
hello
world
hello
world
hello
为什么world
只打印4
times 而不是5
?
编辑:可以从golang规范中引用答案:
程序执行首先初始化主包,然后调用函数 main。当 main 函数返回时,程序退出。它不会等待其他(非主)goroutine 完成。