Sobes.tech
Junior — Middle

Millised on soovitatavad lähenemised ja praktikad, mida kasutatakse konteksti ja meetodi context.WithValue töötamisel?

sobes.tech AI

Vastus AI-lt

Töö ajal Go kontekstiga ja context.WithValue kasutamisel on oluline meeles pidada järgmisi soovitusi:

  • Kontekst on mõeldud signaalide tühistamiseks, ajapiirangute ja piiratud teabe edastamiseks, mis on seotud päringuga.
  • Kasutage context.WithValue ainult andmete edastamiseks, mis on vajalikud kogu päringu elutsükli jooksul ja mis ei sobi otsesteks funktsiooniparameetriteks.
  • WithValue võtmed peaksid olema unikaalsed ja mitteavalikud tüübid, et vältida konflikte. Tavaliselt luuakse oma võtmetüüp.
  • Ärge salvestage konteksti suuri objekte või andmeid, mis võivad põhjustada mälulekkeid.

Näide võtme kasutamisest:

package main

import (
    "context"
    "fmt"
)

type ctxKey string

func main() {
    võti := ctxKey("userID")
    ctx := context.WithValue(context.Background(), võti, 42)

    kasutajaID := ctx.Value(võti).(int)
    fmt.Println("Kasutaja ID kontekstist:", kasutajaID)
}

Seega on kontekst mõeldud metaandmete edastamiseks ja operatsioonide elutsükli haldamiseks, mitte rakenduse oleku salvestamiseks.