我有两行(或可能更多)输入行,我希望程序接受。例如。
1 2 3 4
5 6 7 8
Run Code Online (Sandbox Code Playgroud)
根据官方文件,
for scanner.Scan() {
}
Run Code Online (Sandbox Code Playgroud)
会导致对无限行进行扫描,直到达到EOF或错误为止,是否还有其他函数会接受两行输入呢?
要求用户按“CTRL + D”,从终端发出 EOF 信号,你上面的代码应该没有任何变化。
传统上,最终用户从标准输入中输入空行(零长度)。例如,
package main
import (
"bufio"
"fmt"
"io"
"os"
"strings"
)
func main() {
snr := bufio.NewScanner(os.Stdin)
enter := "Enter a line of data:"
for fmt.Println(enter); snr.Scan(); fmt.Println(enter) {
line := snr.Text()
if len(line) == 0 {
break
}
fields := strings.Fields(line)
fmt.Printf("Fields: %q\n", fields)
}
if err := snr.Err(); err != nil {
if err != io.EOF {
fmt.Fprintln(os.Stderr, err)
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
$ go run data.go
Enter a line of data:
1 2 3 4
Fields: ["1" "2" "3" "4"]
Enter a line of data:
5 6 7 8
Fields: ["5" "6" "7" "8"]
Enter a line of data:
$
Run Code Online (Sandbox Code Playgroud)