Sobes.tech
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.