Sobes.tech
Junior — Middle

Jaké doporučené přístupy a praktiky se používají při práci s kontextem a metodou context.WithValue?

sobes.tech AI

Odpověď od AI

Při práci s kontextem v Go a používání context.WithValue je důležité pamatovat na následující doporučení:

  • Kontext je určen k přenosu signálů o zrušení, časových limitů a omezených informací souvisejících s požadavkem.
  • Používejte context.WithValue pouze k přenosu dat, která jsou potřebná po celou dobu životnosti požadavku a která nejsou vhodná jako explicitní parametry funkce.
  • Klíče pro WithValue by měly být jedinečné a neveřejné typy, aby se předešlo konfliktům. Obvykle si vytvoříte vlastní typ klíče.
  • Neukládejte do kontextu velké objekty nebo data, která by mohla vést ke ztrátám paměti.

Příklad použití klíče:

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 uživatele z kontextu:", userID)
}

Tímto způsobem slouží kontext k přenosu metadat a správě životního cyklu operací, nikoli k ukládání stavu aplikace.