说明如何验证仅针对int的用户输入



是否有方法在Go中只扫描整数?比如年龄或订单数量等,所以你不希望用户输入字母或符号。Scanf显然不起作用,它被跳过并输出"unexpected newline">

func AgeInput(age int) {
fmt.Println("enter your Age :..")

_, err := fmt.Scanf("%d", &UserAge)
if err != nil {
fmt.Println(err)
}

}

我还尝试使用contains和containsAny来检查输入是否有任何数字,如果没有,那么它是无效的,用户将被要求再试一次,但它返回总是真或总是假

func ValidateAge(age int){
AgeInput(age)
if strings.Contains(strconv.Itoa(UserAge), "1234567890"){
validAge = true
}
for !validAge {
fmt.Println("wrong input try again")
AgeInput(age)
}

}

我认为你在正确的轨道上,但只需要稍微调整一下你的代码:

package main
import (
"fmt"
)
func main() {
fmt.Println("Enter your Age: ")
var userAge int
for true {
_, err := fmt.Scanf("%d", &userAge)
if err == nil {
break
}
fmt.Println("Not a valid age - try again")
var dump string
fmt.Scanln(&dump)
}
fmt.Println(userAge)
}

Scanf只扫描,直到它得到匹配,但将保持该行的其余部分不变,所以我们需要用fmt清除STDIN缓冲区。Scanln

相关内容

最新更新