Sobes.tech
Junior — Middle

Welke aanbevolen benaderingen en praktijken worden gebruikt bij het werken met de context en de methode context.WithValue?

sobes.tech AI

Antwoord van AI

Bij het werken met de context in Go en het gebruik van context.WithValue is het belangrijk om de volgende aanbevelingen te onthouden:

  • De context is bedoeld om signalen voor annulering, tijdslimieten en beperkte informatie gerelateerd aan het verzoek over te dragen.
  • Gebruik context.WithValue alleen om gegevens over te dragen die nodig zijn gedurende de levenscyclus van het verzoek en die niet geschikt zijn als expliciete functieparameters.
  • Sleutels voor WithValue moeten unieke en niet-openbare typen zijn om conflicten te voorkomen. Meestal wordt een eigen sleuteltype gemaakt.
  • Bewaar geen grote objecten of gegevens die geheugenlekken kunnen veroorzaken in de context.

Voorbeeld van het gebruik van een sleutel:

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("Gebruikers-ID uit context:", userID)
}

Op deze manier wordt de context gebruikt om metadata over te dragen en de levenscyclus van operaties te beheren, niet om de status van de applicatie op te slaan.