
Баг: Забывают очистить строку от пробельных символов
Что делают:
Подают на вход " 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 или из файла, пробелы могут остаться. Лучше перестраховаться.
Загрузка...