在for循环中获取用户输入时,我似乎遇到了一个奇怪的问题。 这里是我的code如何在Go中使用fmt.Scanf
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
我注意到的是,每次循环发生两次,难道这是因为围棋是采用并行默认情况下,并导致两个处理器在for循环内运行代码?
据我所知,每次迭代只进行一次,'Debug:i:n'其中'n'从0到9暗示了这一点。或者你的意思是别的吗?这是我在终端中的会话:https://gist.github.com/4357860它完全按照预期工作。 –
你的输出如何与你的代码不匹配? – jdi
@VladimirMatveev如果你试图在你的机器上运行它,我想你会明白我的意思。你看到循环中的scanf吗?它应该从键盘读取10次值。但是对于我给出的每个输入,循环块都会执行两次。所以我增加了两次。 – gprasant