Senior
Zašto se koristi kontekst? Kako ste ga koristili u praksi?
sobes.tech АИ
Одговор од АИ
U Go jeziku, context se koristi za prenos signala za otkazivanje, vremenskih ograničenja i drugih vrednosti između gorutina, posebno pri radu sa zahtevima, vremenskim ograničenjima i otkazivanjem operacija.
Praktična primena:
- Otkazivanje dugotrajnih operacija pri zatvaranju HTTP zahteva.
- Prenos vremenskog ograničenja kako operacija ne bi trajala duže od zadanog vremena.
- Prenos metapodataka (npr. identifikatora zahteva) kroz lanac poziva.
Primer upotrebe:
func handler(ctx context.Context) {
select {
case <-time.After(5 * time.Second):
fmt.Println("Operacija završena")
case <-ctx.Done():
fmt.Println("Operacija otkazana")
}
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
handler(ctx)
}
Ovde će operacija biti prekinuta nakon 2 sekunde, čak i ako je planirana za 5.