Sobes.tech
Junior — Middle

Aké odporúčané prístupy a praktiky sa používajú pri práci s kontextom a metódou context.WithValue?

sobes.tech AI

Odpoveď od AI

Pri práci s kontextom v Go a používaní context.WithValue je dôležité pamätať na nasledujúce odporúčania:

  • Kontext je určený na prenos signálov o zrušení, časových limitov a obmedzených informácií súvisiacich s požiadavkou.
  • Používajte context.WithValue iba na prenos dát, ktoré sú potrebné počas celého životného cyklu požiadavky a nie sú vhodné ako explicitné parametre funkcie.
  • Kľúče pre WithValue by mali byť jedinečné a neverejné typy, aby sa predišlo konfliktom. Zvyčajne si vytvoríte vlastný typ kľúča.
  • Neukladajte do kontextu veľké objekty alebo údaje, ktoré by mohli viesť k únikom pamäti.

Príklad použitia kľúča:

package main

import (
    "context"
    "fmt"
)

type ctxKey string

func main() {
    kľúč := ctxKey("userID")
    ctx := context.WithValue(context.Background(), kľúč, 42)

    userID := ctx.Value(kľúč).(int)
    fmt.Println("ID používateľa z kontextu:", userID)
}

Týmto spôsobom slúži kontext na prenos metadát a správu životného cyklu operácií, nie na ukladanie stavu aplikácie.