Back to questions
Junior — Middle
101
Как отличить использование Context.TODO от Context.Background в коде, и в каких случаях применяются эти функции?
Answer from AI
sobes.tech AI
В Go context.Background() и context.TODO() возвращают контекст, но используются в разных ситуациях:
-
context.Background()— это базовый, пустой контекст, который обычно используется в качестве корневого контекста в main-функциях, тестах или при инициализации. Он означает, что контекст не отменяется и не содержит значений. -
context.TODO()— используется как заглушка в тех местах кода, где контекст еще не определён или не решено, какой именно контекст использовать. Это сигнал для разработчиков, что здесь нужно позже подумать и заменить на подходящий контекст.
Пример:
func main() {
ctx := context.Background() // корневой контекст
process(ctx)
}
func process(ctx context.Context) {
// если пока не знаем, какой контекст передать дальше
childCtx := context.TODO()
doSomething(childCtx)
}
Итого:
- Используйте
Background()как корневой контекст. - Используйте
TODO()как временную заглушку, когда контекст еще не определён.