gpt4 book ai didi

string - Golang中的Scanln不接受空格

转载 作者:行者123 更新时间:2023-12-01 22:26:39 26 4
gpt4 key购买 nike

如何使用接受空白作为输入的Scanln

最佳答案

您不能将 fmt 软件包的Scanln()和类似功能用于您要执行的操作,因为引用了fmt软件包doc:

动词处理的输入是隐式用空格分隔的:除%c之外的每个动词的实现都从丢弃剩余输入中的前导空格开始,%s动词(和%v读入字符串)停止在第一个空格或换行符。
fmt包有意过滤出空格,这是它的实现方式。

而是使用 bufio.Scanner 来读取可能包含空白的行,而这些空白不希望您过滤掉。要从标准输入中读取/扫描,请使用 bufio.Scanner 函数并传递bufio.NewScanner()来创建一个新的os.Stdin

例:

scanner := bufio.NewScanner(os.Stdin)
if scanner.Scan() {
line := scanner.Text()
fmt.Printf("Input was: %q\n", line)
}

现在,如果您输入3个空格并按Enter,输出将是:
Input was: "   "

一个更完整的示例,该示例将不断读取行,直到您终止应用程序或输入 "quit"为止,并还会检查是否存在错误:
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
line := scanner.Text()
fmt.Printf("Input was: %q\n", line)
if line == "quit" {
fmt.Println("Quitting...")
break
}
}
if err := scanner.Err(); err != nil {
fmt.Println("Error encountered:", err)
}

关于string - Golang中的Scanln不接受空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59612961/

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