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

Функция context.Background

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

Синтаксис

ctx := context.Background()

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

Пример

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

package main import ( "context" "fmt" ) func main() { ctx := context.Background() printMessage(ctx) } func printMessage(ctx context.Context) { fmt.Println("Context is working") }

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

"Context is working"

Пример

Давайте используем context.Background для создания дочернего контекста с отменой и запустим горутину, которая завершится по сигналу:

package main import ( "context" "fmt" "time" ) func main() { ctx, cancel := context.WithCancel(context.Background()) go worker(ctx) time.Sleep(2 * time.Second) cancel() time.Sleep(500 * time.Millisecond) fmt.Println("Main done") } func worker(ctx context.Context) { for { select { case <-ctx.Done(): fmt.Println("Worker stopped") return default: fmt.Println("Working...") time.Sleep(500 * time.Millisecond) } } }

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

"Working..." "Working..." "Working..." "Worker stopped" "Main done"

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

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