我想阻止用户输入大于5且小于1的数字
我该怎么做?
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
fmt.Println("Please rate our pizza between 1 and 5")
reader := bufio.NewReader(os.Stdin)
input, _ := reader.ReadString('\n')
fmt.Println("Yourr rate is: ", input)
convertedInput, err := strconv.ParseFloat(strings.TrimSpace(input), 64)
if convertedInput > 5 || convertedInput < 1 {
fmt.Println("you should rate between 1 to 5")
####want to stop program here
}else {
fmt.Println(convertedInput)
}
if err != nil {
fmt.Println(err)
}else {
fmt.Println("your rate is: ", convertedInput)
}
}
1条答案
按热度按时间p8h8hvxi1#
您可以从
main
函数return
停止程序执行。或者,如果你想返回一个非零的退出代码来表示错误,你可以使用
os.Exit
。这可能适合您,因为程序没有成功。最后,您可以使用
panic
,这将转储堆栈跟踪。这不适合这种情况,因为它是用户输入的错误,而不是您可以使用堆栈跟踪调试的编程错误。但它将 * 结束程序。也许你更愿意反复询问用户,直到他们提供一个有效的答案。为此,使用
for
循环。这是一种方法:更详细地回顾这段代码,
我建议不要忽略错误。你不知道
input
是什么。Try the code on the playground to see how that causes unexpected behavior.下面是:
这些条件的顺序很有趣。在检查关联的
err
之前先检查convertedInput
。我会这样做:这样,如果ParseFloat成功,您只会检查
convertedInput
。最后