我一直在玩A Tour of Go 中的以下代码,但我不明白当我应用一些小的更改时发生了什么。原代码是这样的
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
没关系:五次你好,五次世界。当我打电话时我开始变得奇怪
say("world")
go say("hello")
现在输出只是
world
world
world
world
world
没有你好。有两个 goroutines 就更奇怪了
go say("world")
go say("hello")
现在根本没有输出。当我改变i < 5到i < 2和呼叫
go say("world")
say("hello")
我得到
world
hello
hello
我在这里错过了什么?
POPMUISE
心有法竹
一只萌萌小番薯
相关分类