На этом курсе начинают с основ языка Go. Сначала рассматривают особенности и историю языка, выясняют, для каких задач она подходит лучше всего. Сравнивают Go с другими языками программирования. Слушатели устанавливают и настраивают среду разработки на своем компьютере. Затем переходят к изучению базового синтаксиса: пакеты, условные операторы, импорт, функции, основные типы данных и циклы.
Далее курс охватывает работу с основными структурами данных в Go. Ученики научатся работать с массивами, срезами и мапами - от создания до модификации и итерации. Рассматривают методы и интерфейсы для улучшения структуры кода, в частности полиморфизм и дженерики. Особое внимание уделяют обработке ошибок - созданию, возвращению и обработке ошибок в функциях, работе с panic и recover.
Этот блок посвящен работе с вводом-выводом данных. Слушатели научатся использовать стандартный ввод/вывод, выполнять основные операции с файлами. Ознакомятся с концепцией контекста для управления горутинами и научатся логировать информацию с помощью стандартных пакетов log и slog. Также рассматривают подходы к структурированию проектов и тестированию кода в Go.
В этой части курса рассматривают базовые алгоритмы и структуры данных. Начинают с временной и пространственной сложности алгоритмов, O-нотации. Изучают основные алгоритмы сортировки и их реализацию на Go. Подробно разбирают деревья и хеш-таблицы - их особенности, методы разрешения коллизий и нюансы использования в Go.
Здесь углубляются в конкурентное программирование. Объясняют понятия потоков и процессов, асинхронных операций и параллелизма. Слушатели научатся использовать горутины, мьютексы, семафоры, каналы и WaitGroup для синхронизации. Рассматривают проблемы взаимоблокировки и способы их избежания. Также изучают сетевые модели OSI и TCP/IP, протоколы TCP, UDP, HTTP, HTTPS и учатся создавать TCP-серверы.
Этот модуль охватывает работу с Docker и базами данных. Объясняют отличия между виртуальными машинами и контейнерами, устанавливают Docker, создают Dockerfile, образы и управляют контейнерами. В части баз данных рассматривают основные виды БД, их классификацию, работу с PostgreSQL и MongoDB, а также выбор соответствующего типа базы данных для конкретных потребностей.
Слушатели знакомятся с фреймворком Fiber для разработки веб-приложений. Учатся устанавливать и настраивать Fiber, создавать простые REST API и RPC-сервисы. Рассматривают маршрутизацию для различных HTTP-методов, группы маршрутов, интеграцию Swagger для документации. Изучают парсинг данных, сериализацию, валидацию и обработку запросов.
В этом блоке рассматривают middleware в Fiber - создание и использование, авторизацию пользователей, JWT для защиты маршрутов, логирование и обработку ошибок. Также изучают WebSockets для связи в реальном времени - настройку соединений, работу с сообщениями, создание чат-приложений и систем уведомлений, гарантирование безопасности соединений.
Завершающая часть курса охватывает best practices в разработке. Рассматривают основные архитектуры приложений, микросервисную архитектуру, коммуникацию между микросервисами, брокеры сообщений, балансировку нагрузки и оркестрацию контейнеров с Docker Swarm. Последний модуль посвящен подготовке к техническим собеседованиям - работе над распространенными ошибками и ответам на типичные вопросы.
Курс охватывает синтаксис Go и инструменты для разработки. Обучает работе с данными и best practices. Обеспечивает поддержку ментора на протяжении обучения.