Назад к вопросам
СБЕР
Middle
3
Как работает наследование контекстов в Go?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go контексты (context.Context) устроены так, что можно создавать иерархию контекстов, где дочерний контекст наследует значения и отмену от родительского.
Когда создаётся новый контекст на основе родительского (например, через context.WithCancel, context.WithTimeout или context.WithValue), он "наследует" состояние родителя:
- Если родительский контекст отменяется, то автоматически отменяются и все дочерние.
- Значения, сохранённые в родительском контексте, доступны дочерним, если они не переопределены.
Таким образом, наследование контекстов позволяет удобно управлять временем жизни операций и передавать данные по цепочке вызовов.
Пример:
parentCtx := context.Background()
ctx, cancel := context.WithCancel(parentCtx)
// ctx наследует parentCtx
// Если вызвать cancel(), ctx и все его потомки будут отменены
// Можно также создавать дочерние контексты от ctx, и отмена будет распространяться вниз