↓go関数は起動に時間が少しかかる?みたいなのでいずれもiが3になった時に参照してしまうからこのような結果になると思うのですが
package main import ( "fmt" "time" ) func main() { for i := 0; i < 3; i++ { go func() { fmt.Println("i in goroutine:", i) }() } time.Sleep(1 * time.Second) } 結果 i in goroutine: 3 i in goroutine: 3 i in goroutine: 3
↓こちらはなぜそのようにならないのでしょうか?
package main import ( "fmt" "time" ) func main() { for i := 0; i < 3; i++ { go hoge(i) } time.Sleep(1 * time.Second) } func hoge(i int){ fmt.Println("i in goroutine:", i) } 結果 i in goroutine: 0 i in goroutine: 1 i in goroutine: 2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/24 06:48
2020/08/24 06:52