gpt4 book ai didi

go - 如何在 golang 的控制台中结束 `scanner.Scan` 循环?

转载 作者:IT王子 更新时间:2023-10-29 02:25:56 32 4
gpt4 key购买 nike

我希望程序接受两行(或可能更多行)输入。例如。

1 2 3 4
5 6 7 8

根据官方文档,使用

for scanner.Scan() {
}

将导致无限行扫描直到到达 EOF 或错误,是否有其他函数将采用两行输入代替?

最佳答案

传统上,最终用户使用空(零长度)行从 stdin 输入。例如,

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)
}
}
}

输出:

$ 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:

$

关于go - 如何在 golang 的控制台中结束 `scanner.Scan` 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36214456/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com