我一直在玩从A Tour of Go下面的代码,但我不明白当我应用一些小的更改时发生了什么。原来的代码是这样试图了解goroutines
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")
}
和它产生的这种
world
hello
hello
world
world
hello
hello
world
world
hello
这是OK:五次你好,五次世界。我开始变得奇怪,当我打电话
say("world")
go say("hello")
现在的输出就是
world
world
world
world
world
的Hello任何责任。它带有两个办公室,甚至更加诡异
现在根本没有输出。当我改变i < 5
到i < 2
并调用
go say("world")
say("hello")
我得到
world
hello
hello
缺少什么我在这里?
https://gobyexample.com/goroutines – elithrar