Sobes.tech
Middle+

Kann man eine Struktur über context.WithValue in den Kontext setzen?

sobes.tech KI

Antwort von AI

Ja, in Go kannst du eine Struktur mit context.WithValue in den Kontext setzen. Es ist jedoch wichtig zu beachten, dass der Kontext dazu gedacht ist, Daten im Zusammenhang mit der Anfrage zu übertragen, wie Zeitlimits, Deadlines und Metadaten, und nicht für die Übertragung großer oder veränderlicher Strukturen.

Beispiel:

type User struct {
    ID   int
    Name string
}

ctx := context.Background()
user := &User{ID: 1, Name: "Alice"}
ctx = context.WithValue(ctx, "user", user)

// Extraktion
u, ok := ctx.Value("user").(*User)
if ok {
    fmt.Println(u.Name)
}

Es wird empfohlen, Schlüsseltypen zu verwenden, die nicht mit anderen Paketen kollidieren, z.B. eigene Schlüsseltypen, um Kollisionen zu vermeiden.