Sobes.tech
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.WithValue doar 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 WithValue trebuie 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.