Sobes.tech
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.