Junior — Middle
Milyen ajánlott megközelítéseket és gyakorlatokat használnak a kontextussal és a context.WithValue módszerrel végzett munka során?
sobes.tech MI
Válasz az MI-től
Amikor a Go nyelvben a kontextussal dolgozik, és a context.WithValue-t használja, fontos, hogy a következő ajánlásokat tartsa szem előtt:
- A kontextus arra szolgál, hogy jelzéseket, időkorlátokat és korlátozott információkat továbbítson a kéréshez kapcsolódóan.
- Csak akkor használja a
context.WithValue-t, ha az adatok a kérés teljes életciklusa során szükségesek, és nem alkalmasak expliciten átadott paraméterként. - A
WithValuekulcsainak egyedinek és nem nyilvános típusoknak kell lenniük, hogy elkerüljék a konfliktusokat. Általában saját kulcstípust hoz létre. - Ne tároljon a kontextusban nagy objektumokat vagy olyan adatokat, amelyek memória szivárgást okozhatnak.
Példa egy kulcs használatára:
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("Felhasználói azonosító a kontextusból:", userID)
}
Így a kontextus arra szolgál, hogy metaadatokat továbbítson és kezelje a műveletek életciklusát, nem pedig az alkalmazás állapotának tárolására.