Контекст (context.Context
) в Go используется для передачи информации о дедлайнах, отмене и других данных между API границами. Он представляет собой дерево: каждый контекст является дочерним по отношению к другому, кроме корневого (context.Background()
или context.TODO()
).
Основные методы интерфейса context.Context
:
Deadline() (deadline time.Time, ok bool)
: Возвращает дедлайн контекста.Done() <-chan struct{}
: Возвращает канал, который закрывается при отмене контекста.Err() error
: Возвращает ошибку, которая привела к отмене контекста.Value(key any) any
: Возвращает значение, связанное с ключом в контексте.Создаются с помощью функций пакета context
:
context.Background()
: Корневой пустой контекст, используется как основа для главного процесса.context.TODO()
: Используется как заглушка, когда неизвестно, какой контекст использовать.context.WithCancel(parent Context)
: Создает дочерний контекст и функцию отмены.context.WithDeadline(parent Context, d time.Time)
: Создает дочерний контекст с дедлайном.context.WithTimeout(parent Context, timeout time.Duration)
: Создает дочерний контекст с таймаутом.context.WithValue(parent Context, key, val any)
: Создает дочерний контекст со значением.Основные реализации Context
:
emptyCtx
: Базовый, не отменяемый и без значений. Используется Background
и TODO
.cancelCtx
: Поддерживает отмену. Состоит из базового контекста и канала отмены.timerCtx
: Поддерживает дедлайн/таймаут. Содержит cancelCtx
и таймер.valueCtx
: Поддерживает передКонтекст (context.Context
) в Go используется для передачи информации о дедлайнах, отмене и других данных между API границами. Он представляет собой дерево: каждый контекст является дочерним по отношению к другому, кроме корневого (context.Background()
или context.TODO()
).
Основные методы интерфейса context.Context
:
Deadline() (deadline time.Time, ok bool)
: Возвращает дедлайн контекста.Done() <-chan struct{}
: Возвращает канал, который закрывается при отмене контекста.Err() error
: Возвращает ошибку, которая привела к отмене контекста.Value(key any) any
: Возвращает значение, связанное с ключом в контексте.Создаются с помощью функций пакета context
:
context.Background()
: Корневой пустой контекст, используется как основа для главного процесса.context.TODO()
: Используется как заглушка, когда неизвестно, какой контекст использовать.context.WithCancel(parent Context)
: Создает дочерний контекст и функцию отмены.context.WithDeadline(parent Context, d time.Time)
: Создает дочерний контекст с дедлайном.context.WithTimeout(parent Context, timeout time.Duration)
: Создает дочерний контекст с таймаутом.context.WithValue(parent Context, key, val any)
: Создает дочерний контекст со значением.Основные реализации Context
:
emptyCtx
: Базовый, не отменяемый и без значений. Используется Background
и TODO
.cancelCtx
: Поддерживает отмену. Состоит из базового контекста и канала отмены.timerCtx
: Поддерживает дедлайн/таймаут. Содержит cancelCtx
и таймер.valueCtx
: Поддерживает передRegister or sign in to get access to full answers for all questions from the question bank.