Sobes.tech
Junior — Middle

Kādi ieteicamie pieejas un prakses tiek izmantotas, strādājot ar kontekstu un metodi context.WithValue?

sobes.tech AI

Atbilde no AI

Darbojoties ar kontekstu Go valodā un izmantojot context.WithValue, ir svarīgi atcerēties šos ieteikumus:

  • Konteksts ir paredzēts signālu pārraidīšanai par atcelšanu, laika ierobežojumiem un ierobežotas informācijas nodošanai, kas saistīta ar pieprasījumu.
  • Izmantojiet context.WithValue tikai datu nodošanai, kas ir nepieciešami visa pieprasījuma dzīves cikla laikā un nav piemēroti kā skaidri funkcijas parametri.
  • Atslēgas WithValue jābūt unikālām un nepubliskām tipiem, lai izvairītos no konfliktiem. Parasti tiek izveidots īpašs atslēgas tips.
  • Neglabājiet kontekstā lielus objektus vai datus, kas var novest pie atmiņas noplūdēm.

Piemērs, izmantojot atslēgu:

package main

import (
    "context"
    "fmt"
)

type ctxKey string

func main() {
    atslēga := ctxKey("userID")
    ctx := context.WithValue(context.Background(), atslēga, 42)

    lietotājaID := ctx.Value(atslēga).(int)
    fmt.Println("Lietotāja ID no konteksta:", lietotājaID)
}

Tādējādi, konteksts tiek izmantots metadatu nodošanai un operāciju dzīves cikla pārvaldībai, nevis lietojumprogrammas stāvokļa glabāšanai.