Sobes.tech
Senior

Какво знаеш за работата с контекста в Go? Какви методи има?

sobes.tech AI

Отговор от AI

В Go пакетът context се използва за предаване на сигнали за анулиране, времеви ограничения и други стойности между горутините, особено при мрежови и асинхронни операции.

Основни методи и функции:

  • context.Background() — връща празен контекст, обикновено използван като корен.
  • context.TODO() — заместител, когато контекстът все още не е определен.
  • WithCancel(parent Context) — връща нов контекст и функция за анулиране, позволяваща отменяне на операции.
  • WithDeadline(parent Context, deadline time.Time) — създава контекст с крайна дата.
  • WithTimeout(parent Context, timeout time.Duration) — създава контекст с таймаут.
  • WithValue(parent Context, key, val interface{}) — създава контекст с прикачена стойност.

Пример за използване:

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case <-time.After(3 * time.Second):
    fmt.Println("операцията приключи")
case <-ctx.Done():
    fmt.Println("операцията е отменена или изтече")
}

Контекстът помага да се контролира жизненият цикъл на операциите и да се предават параметри без глобални променливи.