【发布时间】:2020-04-01 22:19:20
【问题描述】:
在我的 CLI 程序中,我有这个功能,用户可以告诉我他们想要多少商品。因此,此输入应为整数。
我目前遇到一个问题,如果他们输入一个字符串,它会出错expected an integer,但随后还会再次打印该问题多次而不是一次。
例子:
How many Fruit Tea would you like to buy? qwe
expected integer
How many Fruit Tea would you like to buy? expected integer
How many Fruit Tea would you like to buy? expected integer
How many Fruit Tea would you like to buy?
以下是处理此功能的代码
for {
fmt.Printf("How many %v would you like to buy? ", product.Name)
_, err := fmt.Scan(&response)
if err != nil {
fmt.Println(err)
continue
}
if ok, err := validResponse(response); ok {
break
} else {
fmt.Println(err)
continue
}
}
我必须在这个循环中更改什么,以便它只重复一次问题?
【问题讨论】:
-
只需将最初的问题移到 for 循环之外
-
@Vasanth 的问题是,一旦他们输入一串文本而不是整数,它就会打印错误但不会重复问题