Встречается на 30% собеседований по Go
Что такое контекст
Контекст (context.Context) в Go — это механизм для передачи данных, таймаутов и сигналов отмены между горутинами. Он помогает управлять жизненным циклом операций, особенно в распределённых системах.
Ключевые моменты:
- Отмена:
ctx.Done()позволяет прервать долгие операции. - Таймауты:
context.WithTimeoutустанавливает дедлайн. - Значения:
context.WithValueпередаёт данные (но осторожно!).
Пример:
go
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case <-time.After(3 * time.Second):
fmt.Println("Операция завершена")
case <-ctx.Done():
fmt.Println("Таймаут операции") // Сработает через 2 секунды
}Важно: Контекст должен передаваться явно, обычно как первый аргумент функции. Не храните его в структурах!
Похожие вопросы
- Зачем нужны транзакции33%
- В чем разница процесса и потока в рамках операционной системы33%
- Как устроены контексты в Go33%
- Какие знаешь индексы в БД31%
- Какие у тебя зарплатные ожидания30%
- В чем разница между буферизованным и небуферизованным каналом29%
- Что происходит при записи в закрытый канал29%
- С какими базами данных работал29%
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
