Основы синтаксиса Строки и руны Массивы и слайсы Map Структуры и методы Интерфейсы Горутины и конкурентность Каналы defer, panic, recover Обработка ошибок Указатели Пакет sync Тестирование Пакеты и модули Стандартная библиотека Context Generics iota и перечисления Разное / продвинутое

Context

4 вопросов

context.Context - механизм для передачи дедлайнов, сигналов отмены и request-scoped данных. Всегда передаётся первым аргументом функции по конвенции Go.

1 Для чего нужен context.Context? 🟡 Средний
Ответ: B) Передачи дедлайнов, отмены и значений между горутинами

context.Context - механизм для передачи сигналов отмены, дедлайнов и request-scoped данных через цепочку вызовов. Позволяет корректно завершать работу при отмене.

Подробнее →
2 Что делает context.WithCancel(parent)? 🟡 Средний
Ответ: B) Создаёт дочерний контекст с функцией отмены

Возвращает (ctx, cancel). Вызов cancel() отменяет ctx и всех его потомков. Родительский parent не затрагивается. Всегда вызывайте cancel() через defer для освобождения ресурсов.

Подробнее →
3 Что делает context.WithTimeout(ctx, 5*time.Second)? 🟡 Средний
Ответ: B) Создаёт контекст, который отменится через 5 секунд

WithTimeout - обёртка над WithDeadline. Контекст автоматически отменяется по истечении таймаута ИЛИ при вызове cancel(). Канал ctx.Done() закрывается при отмене.

Подробнее →
4 Где обычно передаётся context в функции? 🟢 Лёгкий
Ответ: B) Первым аргументом

Конвенция Go: ctx context.Context - всегда первый аргумент функции. Не храните context в структурах. Создавайте для каждого запроса/операции.

Подробнее →