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.WithValueainult andmete edastamiseks, mis on vajalikud kogu päringu elutsükli jooksul ja mis ei sobi otsesteks funktsiooniparameetriteks. WithValuevõ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.