Типы и пользовательский ввод
Работа с математическими операциями, преобразованием типов и получением данных от пользователя.
Что изучим
- Пакет math: константы, округление и математические функции
- Преобразование типов: строки в числа и обратно
- Базовый ввод через fmt.Scanln
- Продвинутые методы ввода: Scan, Scanf
- Безопасный ввод с bufio.Scanner
- Валидация и обработка ошибок
Основные концепции
Пакет math: содержит математические константы высокой точности (Pi, E), функции округления (Round, Floor, Ceil, Trunc), операции со степенями и корнями. Round округляет математически, Floor к минус бесконечности, Ceil к плюс бесконечности, Trunc отбрасывает дробную часть к нулю.
Преобразование типов: функции из пакета strconv конвертируют строки в числа (ParseInt, ParseFloat, Atoi) и обратно (Itoa, FormatFloat). Все функции парсинга возвращают два значения: результат и ошибку, которую обязательно нужно проверять.
Ввод данных через fmt.Scanln: простейший способ получить данные от пользователя. Считывает до символа новой строки, разделяет значения пробелами. Не подходит для многословных строк — останавливается на первом пробеле.
Продвинутый ввод: Scan игнорирует переносы строк, Scanf считывает по шаблону с заданными разделителями. Оба метода требуют понимания работы с буфером ввода.
bufio.Scanner: безопасный способ чтения строк, корректно работает с многословным текстом и переносами строк. Рекомендуется для production кода вместо fmt.Scanln.
Обработка ошибок: всегда проверяйте ошибку при парсинге пользовательского ввода. Невалидные данные должны обрабатываться корректно, а не приводить к панике программы.