如果我错了,请纠正我。据我所知,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 语句可以解决它。但是有没有更好的方法呢?