間違っている場合は修正してください。私の知る限り、ゴルーチンはスレッドとほぼ同じように機能します。したがって、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 ステートメントを追加すると解決します。しかし、それを行うより良い方法はありますか?