Sobes.tech
Back to questions
Junior — Middle
103

Как отличить использование 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() как временную заглушку, когда контекст еще не определён.