3 回答

TA贡献1871条经验 获得超13个赞
我将通过在每次失败后读取直到行尾来解决此问题。这将清除其余的文本。
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
stdin := bufio.NewReader(os.Stdin)
fmt.Println("Please enter an integer: ")
var userI int
for {
_, err := fmt.Fscan(stdin, &userI)
if err == nil {
break
}
stdin.ReadString('\n')
fmt.Println("Sorry, invalid input. Please enter an integer: ")
}
fmt.Println(userI)
}

TA贡献1784条经验 获得超2个赞
我知道这已经得到回答,但这是我的实现:
func flush (reader *bufio.Reader) {
var i int
for i = 0; i < reader.Buffered(); i++ {
reader.ReadByte()
}
}
这应该在每种情况下都适用,包括无法使用“ stdin.ReadString('\ n')”的情况。
- 3 回答
- 0 关注
- 238 浏览
添加回答
举报