Чему вы научитесь
- Находить логические ошибки и скрытые дефекты в программах на Go
- Исправлять проблемы с числовыми вычислениями, преобразованиями типов и областями видимости
- Правильно работать с массивами, срезами, map, строками, байтами и рунами
- Учитывать особенности Unicode и корректно обрабатывать строки в кодировке UTF-8
- Выявлять ошибки при использовании структур, методов, интерфейсов и значений nil
- Правильно формировать цепочки ошибок и соблюдать контракт возврата значений
- Безопасно применять defer, panic и recover
- Освобождать ресурсы и контролировать их жизненный цикл
- Управлять запуском и завершением горутин
- Правильно создавать, передавать и закрывать каналы
- Исправлять блокировки, утечки горутин и ошибки синхронизации
- Применять sync.WaitGroup, sync.Mutex, sync.RWMutex, sync.Cond, sync.Once и атомарные операции
- Использовать context.Context для отмены операций и передачи служебных данных
- Исправлять ошибки в обобщённых функциях с параметрами типов
- Учитывать адресуемость и доступность значений при работе с reflection
- Настраивать сериализацию и строгую десериализацию JSON
- Правильно работать с HTTP-клиентами, серверами и обработчиками
- Безопасно читать потоки данных полностью или с ограничением размера
- Использовать таймеры и тикеры без утечек ресурсов
- Корректно работать с database/sql, транзакциями, строками результата и SQL NULL
- Писать стабильные и детерминированные тесты для конкурентного кода
- Проверять граничные случаи и учитывать некорректные входные данные
- Читать чужой код и объяснять, почему программа работает неправильно
- Писать более надёжный, понятный и предсказуемый код на Go
О курсе
Для кого этот курс
Начальные требования
Знание базового синтаксиса Go
Понимание переменных, выражений, условий, циклов и функций
Базовое знакомство с массивами, срезами, map и структурами
Понимание того, как объявляются методы и интерфейсы
Желательно базовое знакомство с обработкой ошибок, горутинами и каналами
Для заключительных модулей будет полезно общее представление об HTTP и реляционных базах данных
Преподаватели курса
Как проходит обучение
Курс состоит из 100 практических задач, объединённых в 11 тематических модулей.
В начале каждой задачи описывается ситуация и показывается код с ошибкой. Затем необходимо изучить требования, исправить программу и отправить решение на проверку.
В большинстве заданий нужно не написать программу с нуля, а найти конкретный дефект в уже существующем коде. Такой формат развивает навык чтения, анализа и отладки программ.
Автоматические тесты проверяют не только пример из условия, но и дополнительные сценарии. Недостаточно вывести заранее известный результат, обработать только один набор входных данных или заменить вычисление готовой константой.
Сложность повышается постепенно. Сначала рассматриваются базовые ошибки в вычислениях, преобразованиях типов и управляющих конструкциях. Затем задания переходят к коллекциям, строкам, структурам, интерфейсам, обработке ошибок, конкурентному программированию, JSON, HTTP, потокам ввода-вывода, базам данных и тестированию.
После отправки решения вы сразу получаете результат проверки. Если программа не прошла тесты, можно изучить сообщение проверяющей системы, исправить реализацию и отправить её повторно.
Рекомендуется не только исправлять программу, но и самостоятельно формулировать причину ошибки. Например, какое правило Go было нарушено, почему программа компилировалась, при каких входных данных проявлялся дефект и почему исправленный вариант работает корректно.
Такой подход помогает не просто запомнить отдельное решение, а научиться распознавать похожие проблемы в других программах.
Что вы получите
- 100 практических задач на поиск и исправление ошибок в Go
- 11 тематических модулей с постепенным повышением сложности
- Практику чтения, анализа и отладки чужого кода
- Автоматическую проверку решений и граничных случаев
- Разбор распространённых ошибок Go-разработчиков
- Практику работы с массивами, срезами, map, строками и Unicode
- Задания по структурам, методам, интерфейсам и обработке ошибок
- Практику управления горутинами, каналами и общей памятью
- Задания по context.Context, generics, reflection и JSON
- Практику работы с HTTP, потоками ввода-вывода, таймерами и URL
- Задания по database/sql, транзакциям и SQL NULL
- Практику написания стабильных тестов для конкурентного кода
- Подготовку к практическим заданиям и вопросам на собеседованиях
- Навыки написания более безопасного и предсказуемого кода
- Практику работы со стандартной библиотекой Go
- Возможность обсуждать задания и сравнивать разные подходы к решению