如果我错了,请纠正我。据我所知,goroutine 的工作原理与线程大致相似。所以如果我用不同的参数生成相同的函数,前缀为 go。它应该可以正常工作吗?
package main
import "fmt"
func f(from string) {
for i := 0; i < 3; i++ {
fmt.Println(from, ":", i)
}
}
func main() {
go f("direct")
go f("redirect")
//var input string
//fmt.Scanln(&input)
}
实际输出:
rahul@g3ck0:~/programs/go$ go run goroutine.go
rahul@g3ck0:~/programs/go$
我刚回来提示。
预期输出:
direct : 0
direct : 1
direct : 2
redirect : 0
redirect : 1
redirect : 2
不一定按相同的顺序。
无法理解这种奇怪的行为。我错过了什么吗?
编辑:添加 Scan 语句可以解决它。但是有没有更好的方法呢?
慕斯709654
相关分类