О чём курс

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

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

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

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

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

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

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

Программа курса

01 Знакомство с Golang
  • Плюсы и минусы
  • Сферы применения
  • Кто использует
  • 02 Переменные и элементарные типы данных
  • Типизация в Go
  • Объявление переменной
  • Операция присваивания
  • Указатели
  • Расположения переменных в памяти
  • Понятие "zero value"
  • Приведение типов
  • Дженерики
  • 03 Управляющие конструкции языка и отладка программ
  • Конструкции if ... {} else {}, switch
  • Условия и логические операции
  • Цикл for
  • Метки
  • 04 Функции
  • Виды функций.
  • Сигнатура функции
  • Передача аргументов в функцию по ссылке и по значению
  • Области видимости, {}
  • Ошибки, связанные с областью видимости
  • Замыкания
  • Затенения
  • 05 ООП в Golang
  • Определение структур
  • Инкапсуляция полей структуры
  • Композиция
  • Выравнивание
  • Методы
  • 06 Интерфейсы
  • Утиная типизация
  • Композиция интерфейсов
  • Утверждение типов
  • Конструкция type switch
  • Определение и реализация интерфейсов
  • Внутреннее устройство интерфейса
  • Влияние использования интерфейсов на производительность программы
  • Значение типа интерфейс и ошибки, связанные с nil
  • Правила присваивания значений переменным типа интерфейс
  • Опасное и безопасное приведение типов (type cast)
  • 07 Массивы и слайсы, мапы
  • Массивы и слайсы, мапы
  • Длина и ёмкость
  • Внутренняя структура слайсов и мап
  • Различные способы итерации
  • Частые ошибки и затруднения
  • 08 Строки и руны
  • Строки, руны и массивы байт
  • Стандартные функции для работы со строками и Unicode
  • Работа со строками через strings builder
  • 09 Обработка ошибок и паник
  • Интерфейс error
  • Конструкция defer
  • Функции panic и recover.
  • Кастомные ошибки
  • Обертывание ошибок
  • Сопоставление ошибок
  • 10 Тестирование
  • Виды и назначение тестов, пирамида тестирования
  • Понятие табличных тестов
  • Пакет gomock для тестирования
  • Golden files
  • Fuzzing
  • 11 Конкурентность и параллелизм в Golang
  • Горутины и каналы
  • Сравнение буферизированных и небуферизованных каналов
  • Использование каналов для передачи данных и синхронизации
  • Получение данных из канала: select, range
  • 12 Примитивы синхронизации
  • Пул объектов sync.Pool
  • Мьютексы sync.Mutex/RWMutex
  • Словарь sync.Map
  • Условные переменные sync.Cond
  • Группа ожидания sync.WaitGroup, errgroup.WithContext
  • Атомарные операции - пакет atomic
  • Гарантировано одноразовое выполнение sync.Once
  • 13 Сериализация данных
  • Понятие сериализации/десериализации
  • Протоколы JSON, XML, protobuf, gob
  • Структурные тэги
  • 14 Работа с сетью
  • Архитектура Интернета
  • Клиент-серверное взаимодействие
  • Пакет net/http, работа с HTTP
  • Пакет net, работа с низкоуровневыми протоколами
  • CRUD, REST
  • OpenAPI, Swagger
  • Oauth, basic, jwt
  • 15 Конфигурация
  • Различные варианты конфигурации программы
  • Использование простых форматов конфигурации: .ini, .yaml, .json и т.п.
  • Чтение конфигурации из окружения
  • Библиотека для работы с конфигурацией: viper
  • 16 Логирование
  • Стандартная библиотека для логирования
  • Использование интерфейсов для логирования
  • Расширенное логирование на примере zerolog
  • 17 Работа с базами данных
  • Реляционные /нереляционные СУБД и области их применения
  • Основные понятия реляционных БД
  • Подключение к СУБД и настройка пула соединений
  • Выполнение SQL-запросов и получение результатов
  • Стандартные интерфейсы sql.DB, sql.Rows и sql.Tx
  • Использование транзакций
  • SQL-инъекции
  • Работа с базами данных через пакет gorm
  • Работа с базами данных через пакет sqlx
  • 18 Микросервисы
  • Сравнение монолитной и микросервисной архитектур
  • Плюсы и минусы микросервисов
  • Понятие 12-факторного приложения
  • Пример микросервисов на Golang (сервис регистрации пользователей и сервис рассылки уведомлений)
  • 19 gRPC
  • gRPC и protobuf
  • Создание gRPC клиента и сервера, лучшие практики gRPC
  • Интерсепторы, надежность (ретраи, задержки)
  • LS при работе с gRPC
  • 20 Очереди сообщений
  • Событийно-ориентированные архитектуры
  • Apache Kafka
  • NATS
  • RabbitMQ
  • Примеры работы с RabbitMQ из Go
  • Возможные проблемы с очередями: перегрузка, падение обработчиков, сбойные сообщения и пр.
  • 21 Трейсинг
  • RequestId
  • OpenTelemetry
  • Jaeger
  • 22 Паттерны многопоточности
  • Работа с многими каналами: fan in, fan out
  • Pipelines
  • Cancellation
  • Graceful shutdown
  • 23 Память и сборка мусора
  • Особенности памяти программы на Go
  • Выделение и освобождение памяти на стеке и куче
  • Escape analysis
  • Механизм сборки мусора в Go.
  • 24 Работа с ОС
  • Обработка аргументов командной строки: flags, pflag
  • Работа с сигналами ОС
  • Запуск внешних программ
  • Стандартные интерфейсы io.Reader, io.Writer и io.Closer
  • Последовательные и произвольные доступы и интерфейс io.Seeker
  • Буферизация ввода/вывода и оптимизация копирования
  • Работа с каталогами
  • Работа с файлами
  • Работа с потоками ввода/вывода
  • Regex
  • 25 Рефлексия
  • Использование пакета reflect
  • Плюсы и минусы рефлексии
  • Reflect.Type и reflect.Value
  • Примеры использования рефлексии
  • Пакет unsafe и тип unsafe.Pointer
  • 26 Кодогенерация
  • Понятие кодогенерации инструмент `go generate`
  • Полезные библиотеки, использующие кодогенерацию: impl, stringer, jsonenums, easyjson и пр.
  • Работа с AST, практическая кодогенерация
  • 27 Профилирование и оптимизация Go программ
  • Бенчмарки
  • Pprof
  • Профилирование
  • 28 Кэширование
  • Cache miss, cache hit
  • Прогрев кэша
  • LRU, LFU кэш
  • Инвалидация кэша
  • Ленивый кэш
  • Вытеснение данных
  • 29 Внутреннее устройство планировщика
  • Основные структуры планировщика: P, M, G
  • Механизм переключения горутин
  • Обработка системных и сетевых вызовов планировщиком
  • 30 Итого на программу 80 часов: теория – 40 ч (50%), практика – 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
    Технониколь
    Росатом
    Газпром
    Нлмк
    ВСК
    Синимекс

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

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