forループ内でユーザー入力を取得しているときに奇妙な問題が発生しているようです。これが私のコードです
package main
import "fmt"
func main() {
var num int
for i := 0; i < 10; i++ {
fmt.Printf("Debug: i : %d ", i)
fmt.Scanf("%d", &num)
fmt.Println(num)
}
}
このコードを実行するとどうなるかは次のとおりです。
Debug: i : 0
Enter next number
1
1
Debug: i : 1
Enter next number
1
Debug: i : 2
Enter next number
2
2
Debug: i : 3
Enter next number
2
Debug: i : 4
Enter next number
3
3
Debug: i : 5
Enter next number
3
Debug: i : 6
Enter next number
4
4
Debug: i : 7
Enter next number
4
Debug: i : 8
Enter next number
5
5
Debug: i : 9
Enter next number
5
私が気付いたのは、ループの各反復が 2 回発生することです。これは、Go がデフォルトで並列処理を使用しており、両方のプロセッサが for ループ内でコードを実行しているためでしょうか?