Senior
Използвал ли си контексти на практика? Разкажи.
sobes.tech AI
Отговор от AI
Да, аз редовно използвах контексти в Go, особено за управление на времето за изпълнение и отменяне на операции в мрежови заявки и горутини. Контекстът позволява предаване на сигнали за отменяне и времеви ограничения чрез веригата от извиквания, което помага да се избегнат течове на горутини и да се контролира времето за изпълнение.
Пример за използване:
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("операцията е отменена или изтекла")
}
По този начин, ако операцията отнеме повече от 2 секунди, тя ще бъде прекратена, което повишава устойчивостта и реактивността на приложението.