栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang中的Scanln不接受空格

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang中的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: %qn", line)}

现在,如果您输入3个空格并按

Enter
,输出将是:

Input was: "   "

一个更完整的示例,该示例将不断读取行,直到您终止应用程序或输入

"quit"
,并且还会检查是否存在错误:

scanner := bufio.NewScanner(os.Stdin)for scanner.Scan() {    line := scanner.Text()    fmt.Printf("Input was: %qn", line)    if line == "quit" {        fmt.Println("Quitting...")        break    }}if err := scanner.Err(); err != nil {    fmt.Println("Error encountered:", err)}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号