首页 > 后端开发 > Golang > 正文

如何在 Go 中处理无效的用户输入:刷新标准输入和替代方案

DDD
发布: 2024-10-28 09:04:30
原创
640 人浏览过

How to Handle Invalid User Input in Go: Flushing Stdin and Alternatives

了解 Go 中的输入消耗:刷新和替代方案

通过终端与用户交互时,处理无效输入可能具有挑战性。在 Go 中,当用户输入非整数值时,使用 fmt.Scanf() 读取输入可能会遇到问题。这是因为 fmt.Scanf() 不会消耗整行,留下可能干扰后续输入的残留字符。

要解决此问题,一种选择是在无效输入后显式刷新输入缓冲区。然而,Go 并没有提供直接刷新 Stdin 的方法。

替代方法:

  1. 使用 fmt.Scanln(): fmt.Scanln() 读取一行输入,包括空格和换行符。它消耗整行,无需显式刷新。
<code class="go">fmt.Println("Please enter an integer:")
var userI int
_, err := fmt.Scanln(&userI)
if err != nil {
    fmt.Println("Sorry, invalid input. Please try again:")
}</code>
登录后复制
  1. 自定义输入处理: 创建自定义函数来读取和验证用户输入,使用并丢弃无效条目,直到获得有效输入。
<code class="go">func GetUserInputInt() int {
    var userI int
    for {
        fmt.Println("Please enter an integer:")
        _, err := fmt.Scanf("%d", &userI)
        if err == nil {
            return userI
        }
        fmt.Println("Sorry, invalid input. Please try again:")
        fmt.Scanln() // Discard invalid input
    }
}</code>
登录后复制

以上是如何在 Go 中处理无效的用户输入:刷新标准输入和替代方案的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!