Подробнее
Что нужно для старта
- Для успешного освоения курса необходимо:
- Знание синтаксиса Go и стандартной библиотеки.
- Прохождение базового курса по Go (или эквивалентные знания).
- Если сомневаетесь - начните с базового курса по Go.
Что вы получите
- Принимать решения исходя из своих знаний устройства языка.
- Анализировать поведение рантайма.
- Лучше понимать реальную стоимость аллокаций.
- Работать с внутренней структурой слайсов, интерфейсов и новых map (на Swiss Tables).
- Проектировать эффективную асинхронность.
- Применять паттерны конкурентности не по шаблонам из статей, а исходя из задач системы, чтобы не было в приложении никаких гонок данных и утечек горутин.
- Строить HTTP-серверы и клиенты.
- Создавать CLI-приложения и работать с JSON/файлами так, как это делается в реальных высоконагруженных проектах.
- Работать со временем и данными корректно.
- Осознанно выбирать абстракции, сравнивать подходы и понимать trade-offs между удобством кода и его эффективностью на уровне памяти и CPU.
- Мыслить как инженер, не просто писать работающий код, а создавать системы, предсказуемые под нагрузкой и поддерживаемые в долгосрочной перспективе.
Для кого этот курс
- Курс предназначен для начинающих Go-разработчиков, которые хотят расти и работать с серьезными приложениями, backend-системами.
- Вам этот курс нужен,:
- Вы только начали изучать Go, или пишете на Go 1+ год, но чувствуете, что не понимаете, что происходит "под капотом", и хотите устранить этот пробел.
- Вы планируете переходить в команду, работающую с высоконагруженными сервисами, микросервисами или инфраструктурными инструментами.
- Вы столкнулись с проблемами производительности, гонками данных или необъяснимым поведением кода и хотите научиться диагностировать их системно.
- Вы прошли базовый курс по Go и ищете логичное продолжение без повторения основ.
- Вы готовитесь к собеседованиям на позиции Go Developer и хотите уверенно отвечать на вопросы про runtime, память и конкурентность.
- Курс подойдет и новичкам, которые ничего не понимают в программировании, но вам придется начать с базового курса, где будет вводный материал по синтаксису.
Программа курса
- Введение
- Структура слайса
- Как работает append()
- Нюансы append()
- Подслайсы
- Неожиданные мутации
- Сложность операций: Big O
- Как данные хранятся в памяти?
- Практика: Угадай сложность
- Проблема поиска
- Придумываем хеш-таблицу
- Коллизии
- Создаем свою хеш-таблицу
- Заключение
- Введение
- Идея swiss tables
- hash
- Каталог и расширяемое хеширование
- Таблицы (Swiss tables)
- Группы
- Поиск элемента и пробирование
- CRUD в map
- Нюансы map
- Заключение
- Устройство интерфейсов
- Таблицы методов (itab)
- Интерфейсы, nil и производительность
- Использование интерфейсов
- Основы времени
- Арифметика времени
- Форматирование и парсинг времени
- Временные зоны
- Monotonic и Wall Time
- Таймеры и задержки
- DST, високосные секунды и другие подводные камни
- Введение в работу с файлами
- Ручное управление файлом
- Операции с *os.File
- Пример: чтение конфигурации
- Работа с большими файлами
- bufio
- Реализуем логику head
- Пути и работа с директориями
- Directory (Path) Traversal
- Рекурсивный обход файловой системы
- Права доступа, метаданные и временные файлы
- Атомарная запись
- Практика: реализуем tail
- Стандартные операции над файлами
- Что такое JSON
- Основы JSON
- omitempty и omitzero
- MarshalJSON и UnmarshalJSON
- Вложенные структуры, слайсы, мапы
- Динамический JSON
- Валидация в UnmarshalJSON
- Streaming и работа с большими данными
- Циклические ссылки
- encoding/json/v2
- stepik
- Горутины и GMP
- Как устроен GMP
- Горутины
- Каналы
- Нюансы каналов
- Практика с каналами
- select
- Таймеры и таймауты
- Введение в контекст
- Отмена контекста
- Передача контекста вниз по стеку
- Причина - context.Cause
- Пример: длинные вычисления с проверкой контекста
- Работа с сигналами
- Graceful shutdown
- Введение в пакет sync
- sync.Mutex
- sync.RWMutex
- sync.WaitGroup
- sync.Once
- sync.Cond
- sync.Map
- sync.Pool
- errgroup
- Что выбрать?
- Атомарные операции
- Пример: Флаг отмены для воркеров
- Атомарное обновление структуры - atomic.Pointer
- Когда нельзя использовать атомарные операции
- Заключение
- Graceful shutdown
- Pipeline
- Worker Pool
- Fan-Out/Fan-In
- Resource Pool
- Circuit Breaker
- Rate Limiting
- Pub/Sub
- Prioritized Select
- Семафор
- Идемпотентный закрыватель каналов
- Паттерны And и Or
- Неблокирующая передача данных
- Window Buffer
- Паттерн Мост (Bridge)
- Динамический Fan-In
- Паттерн First-Of
- Singleflight
- Собственный errgroup
- Паттерн Барьер
- Мини-оркестратор с откатом
- Worker Pool с динамическим масштабированием
- Диспетчер нетраннера
- Введение в CLI-приложения
- Цветной вывод и индикаторы прогресса
- Стандартный пакет flag
- Пакет pflag
- Библиотека urfave/cli
- Библиотека Cobra и Viper
- Интерактивные режимы (REPL)
- Введение в HTTP как протокол
- Уровни сетевого взаимодействия: OSI
- Эволюция HTTP
- Stateless-природа HTTP
- Основы HTTP-сервера
- Регистрация обработчиков
- Запуск сервера
- Заполнение обработчиков
- Добавляем log/slog
- Роутер
- Роутинг в http.ServeMux
- Убираем глобальный логгер
- Middleware
- Context и цепочки middleware
- Настройка HTTP-сервера
- Чтение данных из HTTP-запроса
- Раздача статических файлов
- Загрузка файлов
- Множественная загрузка файлов
- Заключение
- Простые запросы HTTP
- http.Client
- http.Transport
- Диагностика сетевых ошибок
- http.Request
- Что дальше?
01Слайсы
- Введение
- Структура слайса
- Как работает append()
- Нюансы append()
- Подслайсы
- Неожиданные мутации
02Big O
- Сложность операций: Big O
- Как данные хранятся в памяти?
- Практика: Угадай сложность
03Хеш-таблица
- Проблема поиска
- Придумываем хеш-таблицу
- Коллизии
- Создаем свою хеш-таблицу
- Заключение
04map
- Введение
- Идея swiss tables
- hash
- Каталог и расширяемое хеширование
- Таблицы (Swiss tables)
- Группы
- Поиск элемента и пробирование
- CRUD в map
- Нюансы map
- Заключение
05Интерфейсы
- Устройство интерфейсов
- Таблицы методов (itab)
- Интерфейсы, nil и производительность
- Использование интерфейсов
06Время - time
- Основы времени
- Арифметика времени
- Форматирование и парсинг времени
- Временные зоны
- Monotonic и Wall Time
- Таймеры и задержки
- DST, високосные секунды и другие подводные камни
07Работа с файловой системой
- Введение в работу с файлами
- Ручное управление файлом
- Операции с *os.File
- Пример: чтение конфигурации
- Работа с большими файлами
- bufio
- Реализуем логику head
- Пути и работа с директориями
- Directory (Path) Traversal
- Рекурсивный обход файловой системы
- Права доступа, метаданные и временные файлы
- Атомарная запись
- Практика: реализуем tail
- Стандартные операции над файлами
08JSON
- Что такое JSON
- Основы JSON
- omitempty и omitzero
- MarshalJSON и UnmarshalJSON
- Вложенные структуры, слайсы, мапы
- Динамический JSON
- Валидация в UnmarshalJSON
- Streaming и работа с большими данными
- Циклические ссылки
- encoding/json/v2
- stepik
09Конкурентность
- Горутины и GMP
- Как устроен GMP
- Горутины
- Каналы
- Нюансы каналов
- Практика с каналами
- select
- Таймеры и таймауты
10Контекст
- Введение в контекст
- Отмена контекста
- Передача контекста вниз по стеку
- Причина - context.Cause
- Пример: длинные вычисления с проверкой контекста
11Сигналы
- Работа с сигналами
- Graceful shutdown
12Пакет sync
- Введение в пакет sync
- sync.Mutex
- sync.RWMutex
- sync.WaitGroup
- sync.Once
- sync.Cond
- sync.Map
- sync.Pool
- errgroup
- Что выбрать?
13Пакет atomic
- Атомарные операции
- Пример: Флаг отмены для воркеров
- Атомарное обновление структуры - atomic.Pointer
- Когда нельзя использовать атомарные операции
- Заключение
14Паттерны конкурентности
- Graceful shutdown
- Pipeline
- Worker Pool
- Fan-Out/Fan-In
- Resource Pool
- Circuit Breaker
- Rate Limiting
- Pub/Sub
- Prioritized Select
15Задачи по конкурентности
- Семафор
- Идемпотентный закрыватель каналов
- Паттерны And и Or
- Неблокирующая передача данных
- Window Buffer
- Паттерн Мост (Bridge)
- Динамический Fan-In
- Паттерн First-Of
- Singleflight
- Собственный errgroup
- Паттерн Барьер
- Мини-оркестратор с откатом
- Worker Pool с динамическим масштабированием
- Диспетчер нетраннера
16CLI
- Введение в CLI-приложения
- Цветной вывод и индикаторы прогресса
- Стандартный пакет flag
- Пакет pflag
- Библиотека urfave/cli
- Библиотека Cobra и Viper
- Интерактивные режимы (REPL)
17Теория HTTP
- Введение в HTTP как протокол
- Уровни сетевого взаимодействия: OSI
- Эволюция HTTP
- Stateless-природа HTTP
18HTTP-сервер
- Основы HTTP-сервера
- Регистрация обработчиков
- Запуск сервера
- Заполнение обработчиков
- Добавляем log/slog
- Роутер
- Роутинг в http.ServeMux
- Убираем глобальный логгер
- Middleware
- Context и цепочки middleware
- Настройка HTTP-сервера
- Чтение данных из HTTP-запроса
- Раздача статических файлов
- Загрузка файлов
- Множественная загрузка файлов
- Заключение
19HTTP-клиент
- Простые запросы HTTP
- http.Client
- http.Transport
- Диагностика сетевых ошибок
- http.Request
20Конец второй части курса "Твой Go"
- Что дальше?
Отзывы о курсе
Оставьте отзыв
Расскажите о качестве обучения, поддержке и результате. Это поможет другим выбрать организацию осознанно.
Оставьте заявку
Консультант ответит на вопросы о курсе «Твой Golang - Продвинутый» и поможет разобраться в деталях обучения.
Нажимая кнопку, вы даете согласие на обработку персональных данных
Информация обновлена 14 сентября 2026 г.

Stepik 

















