Sobes.tech
Senior

Mire használják a kontextust? Hogyan használtad a gyakorlatban?

sobes.tech MI

Válasz az MI-től

A Go nyelvben a context a megszakítási jelek, időkorlátok és más értékek átadására szolgál goroutine-ok között, különösen kéréskezelés, időtúllépés és műveletek megszakítása esetén.

Gyakorlati alkalmazás:

  • Hosszú műveletek megszakítása HTTP kérés lezárásakor.
  • Időkorlát átadása, hogy egy művelet ne tartson tovább a megadott időnél.
  • Metaadatok (pl. kérésazonosítók) átadása a hívási láncon keresztül.

Használati példa:

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Művelet befejeződött")
    case <-ctx.Done():
        fmt.Println("Művelet megszakítva")
    }
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    handler(ctx)
}

Itt a művelet 2 másodperc múlva megszakad, még akkor is, ha 5 másodpercre van tervezve.