go - 在 Go 中清除缓冲区
问题描述
我是 Golang 的新手,在尝试获取连续输入时,第一个 scanf() 获取输入,其余的 scanf() 被省略
例如:
fmt.Println("Enter A: ")
fmt.Scanf("%d",a)
fmt.Println("Enter B: ")
fmt.Scanf("%d",b)
在这种情况下,第一个 Scanf 工作,而第二个没有得到任何输入
解决方案
使用 scan 而不是 scanf,因为您正在尝试采用 int,
var a, b int
fmt.Println("Enter A: ")
fmt.Scan(&a)
fmt.Println("Enter B: ")
fmt.Scan(&b)
如果你想要一个字符串输入,
reader := bufio.NewReader(os.Stdin)
var a,b string
fmt.Println("Enter A: ")
a, _ := reader.ReadString("\n")
fmt.Println("Enter B: ")
b, _ := reader.ReadString("\n")
推荐阅读
- python - Python遍历两个列表仅遍历最后一个元素
- azure - 带有服务总线触发器的 v2 Azure 函数未触发
- reactjs - 无法在反应组件中设置加载程序
- node.js - 通过 NodeJS 到 127.0.0.1 的 http 请求获得 ECONNREFUSED 的原因可能是什么?
- django - 如何在Django中使用foreignKey链接两个模型,每个模型都有自己的模板
- node.js - PassportJS openid-client 如何在没有会话的情况下使用,将令牌/用户保存在普通 cookie 中
- java - JavaFX - 沿着平行于切线的路径制作动画
- python - python 一组所有数字类型。do pop(),不随机输出
- docker - 是否可以“重置” Docker 容器的读/写层?
- python - 如何在python中将None分配给对象引用