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.WithValuepouze 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
WithValueby 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.