Сайт работает в тестовом режиме - все замечания, предложения и информацию о найденных ошибках направляйте, пожалуйста, в Telegram-группу
Курс в процессе наполнения. Полный курс доступен на Степике

Баг: Забывают очистить строку от пробельных символов

Что делают:
Подают на вход " 123\n" (например, после чтения из файла построчно) и вызывают strconv.Atoi. Получают ошибку.

Почему:
Atoi, ParseInt, ParseFloat не обрезают пробелы, табуляции, символы новой строки. Они ожидают, что строка содержит только число (возможно, с минусом/плюсом). Даже один пробел в конце делает строку невалидной.

Как проявляется:

  • "123 " → ошибка strconv.Atoi: parsing "123 ": invalid syntax.

  • "\t-5\n" → ошибка.

Как правильно:
Всегда применять strings.TrimSpace перед парсингом, если данные получены из внешнего источника (ввод пользователя, файл, сеть).

clean := strings.TrimSpace(input)
num, err := strconv.Atoi(clean)

Нюанс: fmt.Scan(&s) уже срезает пробелы и переводы строк по умолчанию, но если вы читаете через bufio.Scanner или из файла, пробелы могут остаться. Лучше перестраховаться.

Загрузка...