Sobes.tech
Junior — Middle

Koji se preporučeni pristupi i prakse koriste prilikom rada sa kontekstom i metodom context.WithValue?

sobes.tech АИ

Одговор од АИ

При раду са контекстом у Go и коришћењу context.WithValue, важно је запамтити следеће препоруке:

  • Контекст је намењен за пренос сигнала отказа, рокова и ограничених информација везаних за захтев.
  • Користите context.WithValue само за пренос података који су потребни током целог живота захтева и који нису погодни као експлицитни параметри функције.
  • Кључеви за WithValue треба да буду јединствени и непублични типови како би се избегли сукоби. Обично се креира сопствени тип кључа.
  • Не чувајте у контексту велике објекте или податке који могу довести до цурења меморије.

Пример коришћења кључа:

package main

import (
    "context"
    "fmt"
)

type ctxKey string

func main() {
    кључ := ctxKey("userID")
    ctx := context.WithValue(context.Background(), кључ, 42)

    userID := ctx.Value(кључ).(int)
    fmt.Println("ID корисника из контекста:", userID)
}

На овај начин, контекст служи за пренос метаподатака и управљање животним циклусом операција, а не за чување стања апликације.