Senior
Kam ir paredzēts konteksts? Kā to izmantojāt praksē?
sobes.tech AI
Atbilde no AI
Go valodā context tiek izmantots signālu, laika ierobežojumu un citu vērtību pārsūtīšanai starp gorutīnām, īpaši strādājot ar pieprasījumiem, laika ierobežojumiem un operāciju atcelšanu.
Praktiska pielietošana:
- Ilgu operāciju atcelšana, aizverot HTTP pieprasījumu.
- Laika ierobežojuma pārsūtīšana, lai operācija nepārsniegtu noteikto laiku.
- Metadatu (piemēram, pieprasījuma identifikatoru) pārsūtīšana caur izsaukumu ķēdi.
Piemērs lietošanai:
func handler(ctx context.Context) {
select {
case <-time.After(5 * time.Second):
fmt.Println("Operācija pabeigta")
case <-ctx.Done():
fmt.Println("Operācija atcelta")
}
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
handler(ctx)
}
Šeit operācija tiks pārtraukta pēc 2 sekundēm, pat ja tā ir plānota ilgāka par 5 sekundēm.