Senior
За какво се използва контекстът? Как го използвахте на практика?
sobes.tech AI
Отговор от AI
В Go context се използва за предаване на сигнали за отменяне, времеви ограничения и други стойности между горутините, особено при работа с заявки, таймаути и отменяне на операции.
Практическо приложение:
- Отмяна на дълги операции при затваряне на HTTP заявка.
- Предаване на времево ограничение, за да не се изпълнява операцията по-дълго от зададеното време.
- Предаване на метаданни (например идентификатори на заявки) през веригата от извиквания.
Пример за използване:
func handler(ctx context.Context) {
select {
case <-time.After(5 * time.Second):
fmt.Println("Операцията е завършена")
case <-ctx.Done():
fmt.Println("Операцията е отменена")
}
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
handler(ctx)
}
Тук операцията ще бъде прекъсната след 2 секунди, дори ако е планирана за 5.