有人可以解释一下这是如何运作的:
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() {
say("world")
}
但是一旦我在主
中添加单词go to the routine,这就不起作用了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")
}
我认为这是因为它在执行goroutine之前完成了。
答案 0 :(得分:3)
“世界”goroutine没有运行或完成,因为主要退货和程序退出。
当该函数调用返回时,程序退出。它不等待其他(非主要)goroutines完成。 https://golang.org/ref/spec#Program_execution