Ошибка ввода в Go
Если ждут целое, а вводят слово, чтение
не удается. fmt.Scan возвращает два
результата: сколько значений прочитано
и ошибку. Ошибку не отбрасывают. При неудаче
выполняется ветка с сообщением:
var num int
fmt.Print("enter number: ")
n, err := fmt.Scan(&num)
if err != nil || n != 1 {
fmt.Println("bad")
} else {
fmt.Println(num)
}
Если ввели слово, на экране будет "bad".
Если ввели целое, на экране будет это число.
Прочитайте целое. Если ввод не удался,
выведите "bad". Иначе выведите число.
Прочитайте дробное. Если ввод не удался,
выведите "bad". Иначе выведите число.