РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1355 of 1593 menu

Функция context.TODO

Функция context.TODO возвращает непустой пустой контекст. Она не имеет никакого значения и предназначена для использования в качестве временного решения, когда неизвестно, какой контекст следует применить. Это может быть полезно на этапе разработки или рефакторинга, когда требуется передать контекст, но конкретный тип еще не определен.

Синтаксис

ctx := context.TODO()

Функция не принимает никаких параметров и возвращает значение типа context.Context.

Пример

Давайте рассмотрим использование context.TODO в функции, которая ожидает контекст:

package main import ( "context" "fmt" ) func process(ctx context.Context, data string) { select { case <-ctx.Done(): fmt.Println("Operation cancelled") default: fmt.Printf("Processing: %s\n", data) } } func main() { ctx := context.TODO() process(ctx, "example data") }

Результат выполнения кода:

"Processing: example data"

В этом примере context.TODO используется для создания контекста, который передается в функцию process. Поскольку контекст не имеет таймаута или отмены, выполнение происходит без прерываний.

Пример

Рассмотрим ситуацию, когда контекст используется в многопоточном приложении, но конкретный контекст пока не определен:

package main import ( "context" "fmt" "time" ) func worker(ctx context.Context, id int) { select { case <-time.After(500 * time.Millisecond): fmt.Printf("Worker %d finished\n", id) case <-ctx.Done(): fmt.Printf("Worker %d cancelled\n", id) } } func main() { ctx := context.TODO() for i := 0; i < 3; i++ { go worker(ctx, i) } time.Sleep(1 * time.Second) }

Результат выполнения кода:

"Worker 2 finished" "Worker 1 finished" "Worker 0 finished"

В этом примере context.TODO используется для запуска нескольких горутин. Поскольку контекст не поддерживает отмену, все горутины успешно завершаются.

Смотрите также

  • функцию context.Background,
    которая возвращает пустой контекст для инициализации
  • функцию context.WithCancel,
    которая создает контекст с возможностью отмены
  • функцию context.WithTimeout,
    которая создает контекст с таймаутом
  • тип context.Context,
    который определяет интерфейс для работы с контекстом
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить