Junior — Middle
Ce abordări și practici recomandate sunt utilizate atunci când se lucrează cu contextul și metoda context.WithValue?
sobes.tech AI
Răspuns de la AI
Atunci când lucrați cu contextul în Go și utilizați context.WithValue, este important să rețineți următoarele recomandări:
- Contextul este destinat să transmită semnale de anulare, limite de timp și informații limitate legate de solicitare.
- Utilizați
context.WithValuedoar pentru a transmite date necesare pe durata ciclului de viață al solicitării și care nu sunt potrivite ca parametri explici ai funcției. - Cheile pentru
WithValuetrebuie să fie tipuri unice și non-publice pentru a evita conflictele. De obicei, se creează un tip de cheie personalizat. - Nu stocați în context obiecte mari sau date care pot duce la scurgeri de memorie.
Exemplu de utilizare a unei chei:
package main
import (
"context"
"fmt"
)
type ctxKey string
func main() {
key := ctxKey("userID")
ctx := context.WithValue(context.Background(), key, 42)
userID := ctx.Value(key).(int)
fmt.Println("ID utilizator din context:", userID)
}
Astfel, contextul servește pentru a transmite metadate și a gestiona ciclul de viață al operațiunilor, nu pentru a stoca starea aplicației.