As title, it's hard for me to describe the problem. So I showed the sample code, input and output below.
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
", a)
}
}
Input
a b c
d e f
g h i
Expected Output
a
d
g
However, the actual output printed "a", "d" first. Then, after pressing return (enter) key, "g" was printed. This was actual output.
Update
If I pasted whole nine characters, the third iteration was hung. However, if I merely enter character one after another, it met the expected output.
How did you enter that input without a return (enter) ?
If you run this interactively and actually typing in all the input I think you'll understand the reason for the output.
You will have to:
a b c
- nothing will output yet as the third Scan
does not know if c
is all you'll typereturn (enter)
- only at this point you'll see the a
outputTake a look at the doc for Scan
which explains this as well: