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