作为标题,我很难描述问题。所以我在下面展示了示例代码,输入和输出。Golang:fmt.Printf stdout的挂起发生在for循环中fmt.Scan stdin旁边
package main
import (
"fmt"
)
func main() {
for i := 1; i <= 3; i++ {
var a, b, c string
fmt.Scan(&a)
fmt.Scan(&b)
fmt.Scan(&c)
fmt.Printf("%s\n", a)
}
}
输入
a b c
d e f
g h i
期望输出
a
d
g
但是,实际的输出印有 “一”, “d” 之首。然后,按返回(输入)键,打印出“g”。这是实际产出。
更新
如果我粘贴整个九个字符,第三次迭代被挂。然而,如果我只是一个接一个地输入字符,它就会达到预期的输出。
你看到预期的行为......你想要什么,你没有看到? ...除了互动之外,您还可以将输入保存到文件中,然后发出'cat/my/file | myprogram'然后你会看到a,d和g分别在它自己的行上 –
在第三个interation中,它会在扫描到&c时挂起,寻找空白。返回(输入)也被计为空白。 – bigless