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

Тип context.CancelFunc

Тип context.CancelFunc представляет собой функцию, которая отменяет связанный с ней контекст. Она возвращается функциями context.WithCancel, context.WithTimeout и context.WithDeadline. При вызове этой функции контекст отменяется, закрывается канал Context.Done и все операции, ожидающие этого контекста, получают сигнал об отмене.

Синтаксис

type CancelFunc func()

Пример

Давайте создадим контекст с функцией отмены и вызовем ее:

package main import ( "context" "fmt" ) func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() if ctx.Err() == nil { fmt.Println("Context is active") } cancel() if ctx.Err() != nil { fmt.Println(ctx.Err()) } }

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

"Context is active" "context canceled"

Пример

Используем функцию отмены для остановки горутины:

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

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

"Working..." "Working..." "Working..." "Working..." "Goroutine stopped"

Пример

Вызов функции отмены несколько раз не вызывает паники:

package main import ( "context" "fmt" ) func main() { ctx, cancel := context.WithCancel(context.Background()) cancel() cancel() cancel() if ctx.Err() != nil { fmt.Println(ctx.Err()) } }

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

"context canceled"

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

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