目前,这是一个困扰我的问题。当从用户那里获得输入时,我想采用一个循环来要求用户重试,直到他们输入有效的输入为止:
// user_input.go
package main
import (
"fmt"
)
func main() {
fmt.Println("Please enter an integer: ")
var userI int
for {
_, err := fmt.Scanf("%d", &userI)
if err == nil {
break
}
fmt.Println("Sorry, invalid input. Please enter an integer: ")
}
fmt.Println(userI)
}
运行上面的命令,如果用户输入有效的输入,则没有问题:
请输入一个整数:
3
3
退出代码0,进程正常退出。
但是,请尝试输入字符串呢?
请输入一个整数: 什么?
抱歉,输入无效。请输入一个整数:
对不起,输入无效。请输入一个整数:
对不起...
等等,它会不断地逐个字符地循环,直到字符串用尽为止。即使输入单个字符也会循环两次,我假设它会解析换行符。
无论如何,必须有一种在Go中刷新Stdin的方法吗?
PS在没有此类功能的情况下,您将如何解决该功能以提供等效功能?即使那样我也失败了...
慕桂英4014372
一只斗牛犬
相关分类