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("операцията е отменена или изтече")
}
Контекстът помага да се контролира жизненият цикъл на операциите и да се предават параметри без глобални променливи.