Sobes.tech
Senior

Czy używałeś kontekstów w praktyce? Opowiedz.

sobes.tech AI

Odpowiedź od AI

Tak, regularnie korzystałem z kontekstów w Go, szczególnie do zarządzania czasem wykonywania i anulowania operacji w żądaniach sieciowych i gorutynach. Kontekst pozwala przekazywać sygnały anulowania i limity czasowe przez łańcuch wywołań, co pomaga unikać wycieków gorutyn i kontrolować czas wykonywania.

Przykład użycia:

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

select {
case <-time.After(3 * time.Second):
    fmt.Println("operacja zakończona")
case <-ctx.Done():
    fmt.Println("operacja anulowana lub przekroczono czas")
}

W ten sposób, jeśli operacja zajmie więcej niż 2 sekundy, zostanie przerwana, co zwiększa odporność i szybkość reakcji aplikacji.