如果用户输入的数据不正确,应用程序必须重复提问

时间:2018-10-24 22:53:19

标签: go command-line-interface

大家!我是Golang的新手,遇到了问题。 我有一些这样的代码(仅作为示例):

fmt.Println("yes or no:")
if _, err := fmt.Scan(&str); err != nil {
    panic(err)
}
if str == "no" {
    fmt.Println("You have to enter yes.")
    //What do I need to write this?
}

我不会在用户输入正确的数据或终止过程之前再次显示“是或否”问题。

2 个答案:

答案 0 :(得分:2)

您可以使用while循环(在Go中为for)连续循环,直到获得所需的输入为止。

var keepRepeating = true

scanner := bufio.NewScanner(os.Stdin)

for keepRepeating {

    fmt.Println("Enter y/n")    
    scanner.Scan()
    if scanner.Text() == "y" {
        keepRepeating = false
    }
    if scanner.Text() == "n" {
        keepRepeating = false       
    }
}

答案 1 :(得分:1)

谢谢大家!我是这样做的:

for {
    fmt.Println("yes or no:")
    if _, err := fmt.Scan(&str); err != nil {
        panic(err)
    }
    if str == "no" {
        fmt.Println("enter again")
    } else {
        break
    }
}