Junior — Middle
Használható-e a kontextus az adatok átadására komponensek vagy funkciók között?
sobes.tech MI
Válasz az MI-től
A Go-ban a (context.Context) kontextus arra szolgál, hogy jeleket, időkorlátokat és értékeket továbbítson a kérés vagy művelet kapcsán, goroutine-ok és függvények között. Azonban nem ajánlott a kontextus használata tetszőleges adatok átadására komponensek vagy függvények között.
Okok:
- A kontextusnak csak az operáció életciklusának kezeléséhez kapcsolódó adatokat kell tartalmaznia (pl. időkorlátok, megszakítások).
- Üzleti adatok átadása a kontextuson keresztül bonyolítja a kódot és csökkenti az olvashatóságot.
A helyes megközelítés az, hogy a szükséges adatokat egyértelműen átadjuk a függvények paraméterein keresztül, vagy más struktúrákat használunk az adatok cseréjéhez.
Példa a kéréshez kapcsolódó érték átadására a kontextus használatával:
ctx := context.WithValue(context.Background(), "userID", 12345)
userID := ctx.Value("userID")
Azonban jobb elkerülni ezt a megközelítést az adatok átadására a komponensek között, kivéve, ha valóban szükséges az operáció életciklusának kezeléséhez.