Практика: Работа с файлами и вводом-выводом
Онлайн редактор кода для Go
Здесь вы можете попробовать свои силы в программировании на языке Go. Для этого мы предоставляем вам онлайн редактор кода, в котором вы можете написать свой код и запустить его.
❗️ При обновлении страницы код пропадёт, по этому, сохраните свой код куда-нибудь, если он важный.
Задание 1 — Счётчик строк и слов в файле
Задание 1: Анализатор текста
⏱️ Примерное время: 10-15 минутСоздай файл text.txt с любым текстом. Программа считает количество строк, непустых строк, слов и символов. Выведи красивую статистику.
Требования:
- используй
bufio.Scannerдля построчного чтения - считай: общее кол-во строк, непустых строк, слов (
strings.Fields), символов - выведи статистику с эмодзи и средней длиной строки
Пример вывода:
📄 text.txt
Строк всего: 12
Непустых строк: 10
Слов: 89
Символов: 456
Средняя длина строки: 38 символов
Задание 2 — Копировщик файлов с проверкой и логом
Задание 2: Надёжный копировщик файлов
⏱️ Примерное время: 15-20 минутСкопируй файл source.txt в backup.txt с помощью io.Copy. Если backup.txt существует — спроси у пользователя, перезаписывать или нет.
Требования:
- используй
io.Copyдля копирования - проверь существование backup.txt через
os.Stat - если файл существует — спроси у пользователя (fmt.Scanln)
- выводи размер исходного и скопированного файла
- при ошибке — красивое сообщение
Пример вывода:
backup.txt уже существует (1.2 MB). Перезаписать? (y/n): y
Копирование успешно. Размер: 1.2 MB
Задание 3 — Простой логгер миссий
Задание 3: Логгер миссий
⏱️ Примерное время: 15-20 минутСоздай структуру MissionLogger. Метод Log(event string) добавляет строку с временем в файл mission.log. В main симулируй миссию.
Требования:
os.OpenFileсO_APPEND|O_CREATE|O_WRONLYfmt.Fprintfс временем:2025-01-26 14:30:45 - Событие: ...- в
mainнесколько вызововLog - выведи содержимое файла после миссии
Пример файла mission.log:
2025-01-26 14:30:45 - Старт двигателей
2025-01-26 14:30:47 - Выход на орбиту
2025-01-26 14:30:50 - Миссия успешна!
Задание 4 — Чтение и запись CSV — супергерои
Задание 4: Супергерои в CSV
⏱️ Примерное время: 20-25 минутСоздай файл heroes.csv с колонками Name,Power,Level. Программа читает его, выводит таблицу и добавляет нового героя.
Требования:
encoding/csv—NewReader,ReadAll- пропусти заголовок или используй его
- выведи таблицу в консоль
- добавь нового героя через
csv.NewWriterиWrite
Пример вывода:
Name Power Level
Superman полёт 95
Batman интеллект 88
...
Задание 5 — JSON-галерея героев
Задание 5: Галерея героев в JSON
⏱️ Примерное время: 20-25 минутСоздай слайс структур Hero. Заполни данными и сохрани в heroes.json с красивым форматированием (MarshalIndent). Выведи содержимое файла.
Требования:
- структура
Hero { Name string, Power string, Level int } json.MarshalIndentс отступом " "os.WriteFile("heroes.json", data, 0644)- выведи содержимое файла через
os.ReadFileиfmt.Println(string(data))
Пример heroes.json:
[
{
"Name": "Superman",
"Power": "полёт",
"Level": 95
},
...
]
Задание 6 — Поисковик по файлу
Задание 6: Поиск слова в файле
⏱️ Примерное время: 15-20 минутСоздай файл treasure.txt с текстом. Программа ищет заданное слово (регистронезависимо) и выводит номера строк и сами строки.
Требования:
bufio.Scanner+strings.Contains(strings.ToLower(line), strings.ToLower(query))- вывод:
строка 7: ...сокровище... - в конце — количество найденных совпадений
Пример вывода:
Найдено 3 совпадения:
строка 3: Здесь спрятано настоящее сокровище!
строка 7: Сокровище ждёт тебя.
строка 12: Ты нашёл сокровище!
Задание 7 — Итоговое: Логгер + CSV + JSON
Задание 7: Логгер миссий + CSV + JSON (итоговое)
⏱️ Примерное время: 35-50 минутСоздай логгер миссий, который пишет в log.txt и сохраняет статистику в CSV и JSON.
Требования:
- структура
MissionLogger - метод
Log(event string)— пишет в log.txt с временем - после миссии:
- сохрани события в events.csv (csv.NewWriter)
- сохрани статистику (кол-во событий, длительность, успех/ошибка) в stats.json
- выведи содержимое всех файлов
Пример stats.json:
{
"mission": "Apollo 13",
"events_count": 15,
"duration_sec": 42,
"success": true
}
Работа с файлами — это 90% реальных приложений.
Всегда проверяй ошибки, закрывай файлы и делай код надёжным!