О чём курс

Курс также охватывает обработку ошибок и паник, позволяя вам создавать надежные и безопасные программы на Golang.

В будущем вы сможете углубиться в более сложные темы, включая многопоточность, параллельное и сетевое программирование, веб-разработку на Golang. Вы изучите работу с базами данных, создание пакетов, а также разработку тестов для проверки функциональности вашего кода. Помимо этого курс охватывает аспекты производительности и оптимизации кода, а также лучшие практики разработки на Golang. По окончании обучения вы будете готовы к созданию проектов на Golang и использованию его мощных возможностей для разработки современных приложений.

Программа включает два больших блока, каждый из которых разбит на небольшие курсы, выстроенные в логической последовательности. Они содержат практические задания, которые позволяют отрабатывать навыки как самостоятельно, так и во время онлайн-встреч с преподавателем.

Обучение проходит в формате вебинаров с экспертами, самостоятельным выполнением практики.

Целевая аудитория

Разработчики

Темы курса

01 1.Знакомство с Golang

  • Плюсы и минусы

  • Сферы применения

  • Кто использует

02 2.Переменные и элементарные типы данных

  • Типизация в Go

  • Объявление переменной

  • Операция присваивания

  • Арифметические операции

  • Указатели

  • Расположения переменных в памяти

  • Понятие "zero value"

  • Приведение типов

  • Дженерики

03 3.Управляющие конструкции языка и отладка программ

  • Конструкции if ... {} else {}, switch

  • Условия и логические операции

  • Цикл for

  • Метки

04 4.Функции

  • Виды функций.

  • Сигнатура функции

  • Передача аргументов в функцию по ссылке и по значению

  • Области видимости, {}

  • Ошибки, связанные с областью видимости

  • Замыкания

  • Затенения

05 5.ООП в Golang

  • Определение структур

  • Инкапсуляция полей структуры

  • Композиция

  • Выравнивание

  • Методы

06 6.Интерфейсы

  • Утиная типизация

  • Композиция интерфейсов

  • Утверждение типов

  • Конструкция type switch

  • Определение и реализация интерфейсов

  • Внутреннее устройство интерфейса

  • Влияние использования интерфейсов на производительность программы

  • Значение типа интерфейс и ошибки, связанные с nil

  • Правила присваивания значений переменным типа интерфейс

  • Опасное и безопасное приведение типов (type cast)

07 7.Массивы и слайсы, мапы

  • Массивы и слайсы, мапы

  • Длина и ёмкость

  • Внутренняя структура слайсов и мап

  • Различные способы итерации

  • Частые ошибки и затруднения

08 8.Строки и руны

  • Строки, руны и массивы байт

  • Стандартные функции для работы со строками и Unicode

  • Работа со строками через strings builder

09 9.Обработка ошибок и паник

  • Интерфейс error

  • Конструкция defer

  • Функции panic и recover.

  • Кастомные ошибки

  • Обертывание ошибок

  • Сопоставление ошибок

10 10.Тестирование

  • Виды и назначение тестов, пирамида тестирования

  • Понятие табличных тестов

  • Пакет gomock для тестирования

  • Golden files

  • Fuzzing

11 11.Конкурентность и параллелизм в Golang

  • Горутины и каналы

  • Сравнение буферизированных и небуферизованных каналов

  • Использование каналов для передачи данных и синхронизации

  • Получение данных из канала: select, range

12 12.Примитивы синхронизации

  • Пул объектов sync.Pool

  • Мьютексы sync.Mutex/RWMutex

  • Словарь sync.Map

  • Условные переменные sync.Cond

  • Группа ожидания sync.WaitGroup, errgroup.WithContext

  • Атомарные операции - пакет atomic

  • Гарантировано одноразовое выполнение sync.Once

13 13.Сериализация данных

  • Понятие сериализации/десериализации

  • Протоколы JSON, XML, protobuf, gob

  • Структурные тэги

14 14.Работа с сетью

  • Архитектура Интернета

  • Клиент-серверное взаимодействие

  • Пакет net/http, работа с HTTP

  • Пакет net, работа с низкоуровневыми протоколами

  • CRUD, REST

  • OpenAPI, Swagger

  • Oauth, basic, jwt

15 15.Конфигурация

  • Различные варианты конфигурации программы

  • Использование простых форматов конфигурации: .ini, .yaml, .json и т.п.

  • Чтение конфигурации из окружения

  • Библиотека для работы с конфигурацией: viper

16 16.Логирование

  • Стандартная библиотека для логирования

  • Использование интерфейсов для логирования

  • Расширенное логирование на примере zerolog

17 17.Работа с базами данных

  • Реляционные /нереляционные СУБД и области их применения

  • Основные понятия реляционных БД

  • Подключение к СУБД и настройка пула соединений

  • Выполнение SQL-запросов и получение результатов

  • Стандартные интерфейсы sql.DB, sql.Rows и sql.Tx

  • Использование транзакций

  • SQL-инъекции

  • Работа с базами данных через пакет gorm

  • Работа с базами данных через пакет sqlx

18 18.Микросервисы

  • Сравнение монолитной и микросервисной архитектур

  • Плюсы и минусы микросервисов

  • Понятие 12-факторного приложения

  • Пример микросервисов на Golang (сервис регистрации пользователей и сервис рассылки уведомлений)

19 19.gRPC

  • gRPC и protobuf

  • Создание gRPC клиента и сервера, лучшие практики gRPC

  • Интерсепторы, надежность (ретраи, задержки)

  • TLS при работе с gRPC

20 20.Очереди сообщений

  • Событийно-ориентированные архитектуры

  • Apache Kafka

  • NATS

  • RabbitMQ

  • Примеры работы с RabbitMQ из Go

  • Возможные проблемы с очередями: перегрузка, падение обработчиков, сбойные сообщения и пр.

21 21.Трейсинг

  • RequestId

  • OpenTelemetry

  • Jaeger

22 22.Паттерны многопоточности

  • Работа с многими каналами: fan in, fan out

  • Pipelines

  • Cancellation

  • Graceful shutdown

23 23.Память и сборка мусора

  • Особенности памяти программы на Go

  • Выделение и освобождение памяти на стеке и куче

  • Escape analysis

  • Механизм сборки мусора в Go.

24 24.Работа с ОС

  • Обработка аргументов командной строки: flags, pflag

  • Работа с сигналами ОС

  • Запуск внешних программ

  • Стандартные интерфейсы io.Reader, io.Writer и io.Closer

  • Последовательные и произвольные доступы и интерфейс io.Seeker

  • Буферизация ввода/вывода и оптимизация копирования

  • Работа с каталогами

  • Работа с файлами

  • Работа с потоками ввода/вывода

  • Regex

25 25.Рефлексия

  • Использование пакета reflect

  • Плюсы и минусы рефлексии

  • Reflect.Type и reflect.Value

  • Примеры использования рефлексии

  • Пакет unsafe и тип unsafe.Pointer

26 26.Кодогенерация

  • Понятие кодогенерации инструмент `go generate`

  • Полезные библиотеки, использующие кодогенерацию: impl, stringer, jsonenums, easyjson и пр.

  • Работа с AST, практическая кодогенерация

27 27.Профилирование и оптимизация Go программ

  • Бенчмарки

  • Pprof

  • Профилирование

28 28.Кэширование

  • Cache miss, cache hit

  • Прогрев кэша

  • LRU, LFU кэш

  • Инвалидация кэша

  • Ленивый кэш

  • Вытеснение данных

29 29.Внутреннее устройство планировщика

  • Основные структуры планировщика: P, M, G

  • Механизм переключения горутин

  • Обработка системных и сетевых вызовов планировщиком

30 Итого на программу 80 часов: теория – 40 ч (59%), практика – 40 ч (50%)

95 000 ₽

85 500 ₽ — для физ. лиц

Записаться на курс

95 000 ₽

85 500 ₽ — для физ. лиц

Записаться на курс

Записаться на курс

95 000 ₽

85 500 ₽ — для физ. лиц

Юр. лицо — 95 000 ₽
Физ. лицо — 85 500 ₽
Открытая дата
Продолжая, я подтверждаю, что ознакомлен с Условиями использования и Порядком обработки персональных данных

Наши ученики работают в:

Наши клиенты

Mail.ru
Альфа-Банк, банковская группа
Лаборатория Касперского
Магнит, розничная сеть
Спортмастер, сеть спортивных магазинов
ПСБ
Сбертех
Дзен
IT One
Ростелеком
Мегафон
Nexign
Ozon
Декатлон
X5 Group
Технониколь
Росатом
Газпром
Нлмк
ВСК
Синимекс

Не нашли, что искали? — Просто напишите, и мы поможем

Продолжая, я подтверждаю, что ознакомлен с Условиями использования и Порядком обработки персональных данных
Корпоративное обучение Оценка персонала Сертификация О нас Стань тренером Блог
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.