首页 > 后端开发 > Golang > go中接受带空格的输入

go中接受带空格的输入

Susan Sarandon
发布: 2024-12-06 19:26:12
原创
812 人浏览过

taking input with spaces in go

语境

我正在编写一个计算器程序,要求用户输入表达式并打印结果并再次提示输入下一个表达式。

问题

但是,当我使用 fmt.Scanln() 读取一行(带有空格和制表符等空格字符)时,事情发生了!

遇到空格字符时停止读取(是的!不是换行符而是空格字符)。

例如:
输入:2 3.5(5)
获得:2

但是,我还有更糟糕的事情要说!

输入中的其余字符仍然存在,如果我们再次调用 Scanln() 函数,它会读取它们。

解决方案:

fmt 包中还有一个函数 Scanf()。
这家伙不一样!
它根据格式说明符获取输入并将它们存储在我们给出的变量中。
代码:

    text := ""

    fmt.Println("Enter expression:")
    for {
        var temp rune
        fmt.Scanf("%c", &temp)
        if temp == '\n' {
            break
        }
        text += string(temp)
    }
    fmt.Printf("You entered:\n %v", text)
登录后复制

说明:
1.打印“输入表达式:”
2.循环开始
3.现在,循环从用户处获取输入,逐个字符(go 中的 rune by rune)
5.在每次迭代中,我们都会获取该符文并将其添加或附加到我们的文本变量中。
6.当它读取“n”时,它会中断循环,我们会在 text 变量中得到输入行。
7.这里,rune也可以是空格字符.
所以,从字面上看,它甚至读作“n”。

(读取空格字符是 Scanf("%c",&var_name) 的一个例外,这正是我们想要的!)

注意:它还解决了我们读取多行时遇到的问题。我的意思是,当我们读取多行时,我们会得到意外的输入或行为(我不知道确切的原因)原因!)。
但在这里,由于我们正在逐个字符地读取,也包括“n”(到临时变量中),因此将消除所有这些错误!

以上是go中接受带空格的输入的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板