作爲標題,我很難描述問題。所以我在下面展示了示例代碼,輸入和輸出。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