Sobes.tech
Senior

Mi az a kontextus (context) Go-ban, és miért szükséges?

sobes.tech MI

Válasz az MI-től

Go-ban a context egy csomag és egy típus, amelyet a goroutine-ok közötti leállítási jelek, határidek és más fontos adatok továbbítására használnak.

A context fő feladatai:

  • Lehetővé teszi műveletek (pl. adatbázis vagy HTTP kérések) leállítását, amikor időkorlát vagy felhasználói leállítás történik.
  • Határidőket (deadlines) továbbít a műveletekhez.
  • Lehetővé teszi értékek átadását függvények között (pl. kérésazonosítók).

Használati példa:

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

select {
case result := <-doWork(ctx):
    fmt.Println("Eredmény:", result)
case <-ctx.Done():
    fmt.Println("Művelet leállítva vagy időkorlát elérve")
}

Itt a ctx átadásra kerül a doWork függvénynek, amely megszakíthatja a munkát, ha a kontextus leállításra kerül vagy az időkorlát eléri a végét. Ez segít az operációk és erőforrások életciklusának kezelésében versengő programokban.