Back to questions
Yadro
Middle+
4
Расскажи про context в Go: для чего используется, как работает отмена?
Companies where asked
Answer from AI
sobes.tech AI
В Go пакет context используется для передачи сигналов отмены, дедлайнов и других значений между горутинами, особенно в сетевых и долгих операциях.
Основные моменты:
-
Для чего используется:
- Отмена операций (например, HTTP-запросов, баз данных) при истечении времени или по сигналу.
- Передача дедлайнов (таймаутов).
- Передача значений, связанных с запросом (например, идентификаторы, токены).
-
Как работает отмена:
- Создаётся контекст с функцией отмены (
context.WithCancel), которая возвращает новый контекст и функцию отмены. - При вызове функции отмены все горутины, слушающие этот контекст, получают сигнал и могут прервать работу.
- Создаётся контекст с функцией отмены (
Пример:
ctx, cancel := context.WithCancel(context.Background())
// Запускаем горутину, которая слушает отмену
go func() {
<-ctx.Done()
fmt.Println("Операция отменена")
}()
// Через некоторое время отменяем контекст
cancel()
Таким образом, context помогает управлять жизненным циклом операций и предотвращать утечки ресурсов.