Junior — Middle
Aké odporúčané prístupy a praktiky sa používajú pri práci s kontextom a metódou context.WithValue?
sobes.tech AI
Odpoveď od AI
Pri práci s kontextom v Go a používaní context.WithValue je dôležité pamätať na nasledujúce odporúčania:
- Kontext je určený na prenos signálov o zrušení, časových limitov a obmedzených informácií súvisiacich s požiadavkou.
- Používajte
context.WithValueiba na prenos dát, ktoré sú potrebné počas celého životného cyklu požiadavky a nie sú vhodné ako explicitné parametre funkcie. - Kľúče pre
WithValueby mali byť jedinečné a neverejné typy, aby sa predišlo konfliktom. Zvyčajne si vytvoríte vlastný typ kľúča. - Neukladajte do kontextu veľké objekty alebo údaje, ktoré by mohli viesť k únikom pamäti.
Príklad použitia kľúča:
package main
import (
"context"
"fmt"
)
type ctxKey string
func main() {
kľúč := ctxKey("userID")
ctx := context.WithValue(context.Background(), kľúč, 42)
userID := ctx.Value(kľúč).(int)
fmt.Println("ID používateľa z kontextu:", userID)
}
Týmto spôsobom slúži kontext na prenos metadát a správu životného cyklu operácií, nie na ukladanie stavu aplikácie.