Ввод данных в цикле в Go
Чтобы задать пользователю один и тот же
вопрос несколько раз, нужно читать ввод
в цикле. Бесконечный цикл в Go записывают
словом for без условия. Пока из него
не вышли, у пользователя будут запрашиваться
данные.
Давайте разместим в блоке кода запрос на ввод числа:
for {
fmt.Print("enter number: ")
var tst string
fmt.Scan(&tst)
fmt.Println(tst)
}
Однако созданный цикл будет повторять запрос бесконечно. Поэтому нужно задать дополнительное условие для выхода из него. Давайте укажем, чтобы цикл работал, пока введенное значение является числом. Числом здесь считаем строку из цифр. В противном случае цикл пусть остановится:
for {
fmt.Print("enter number: ")
var tst string
fmt.Scan(&tst)
digits := tst != ""
for _, ch := range tst {
if ch < '0' || ch > '9' {
digits = false
break
}
}
if digits {
fmt.Println(tst)
} else {
break
}
}
Спросите у пользователя его имя. Если
количество символов имени более 6,
пусть появится сообщение о том, что оно
слишком длинное. При этом цикл должен
остановиться.