Back to questions
Senior
4
Что такое context в Go и для чего он нужен?
Companies where asked
sber tech
Answer from AI
sobes.tech AI
В Go context — это пакет и тип, который используется для передачи сквозных данных и сигналов отмены между горутинами и функциями. Он нужен для управления временем жизни операций, особенно в сетевых запросах и длительных процессах.
Основные возможности context:
- Отмена операции (через
context.CancelFunc), чтобы прервать работу при необходимости. - Передача дедлайнов (времени, до которого операция должна завершиться).
- Передача значений (например, идентификаторов запросов) между функциями.
Пример использования:
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
select {
case <-time.After(time.Second * 10):
fmt.Println("operation finished")
case <-ctx.Done():
fmt.Println("operation cancelled or timed out")
}
Таким образом, context помогает контролировать и координировать выполнение асинхронных и длительных операций.