Назад к вопросам
Senior
3
Что знаешь про работу с контекстом в Go? Какие методы у него есть?
Компании, где спрашивали
СБК ПАРУС
Ответ от нейросети
sobes.tech AI
В Go пакет context используется для передачи сигналов отмены, дедлайнов и других значений между горутинами, особенно в сетевых и асинхронных операциях.
Основные методы и функции:
context.Background()— возвращает пустой контекст, обычно используется как корневой.context.TODO()— заглушка, когда контекст еще не определен.WithCancel(parent Context)— возвращает новый контекст и функцию отмены, позволяет отменить операции.WithDeadline(parent Context, deadline time.Time)— создает контекст с дедлайном.WithTimeout(parent Context, timeout time.Duration)— создает контекст с таймаутом.WithValue(parent Context, key, val interface{})— создает контекст с привязанным значением.
Пример использования:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case <-time.After(3 * time.Second):
fmt.Println("operation finished")
case <-ctx.Done():
fmt.Println("operation canceled or timed out")
}
Контекст помогает контролировать время жизни операций и передавать параметры без глобальных переменных.