Sobes.tech
Junior — Middle

Kontextdən komponentlər və ya funksiyalar arasında məlumat ötürmək üçün istifadə etmək mümkündürmü?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da, (context.Context) kontekst, sorğu və ya əməliyyatla əlaqəli siqnalları, vaxt limitlərini və dəyərləri goroutine və funksiyalar arasında ötürmək üçün nəzərdə tutulmuşdur. Ancaq, kontekstdən komponentlər və ya funksiyalar arasında təsadüfi məlumatların ötürülməsi tövsiyə edilmir.

Səbəblər:

  • Kontekst yalnız əməliyyatın həyat dövrünün idarə olunması ilə əlaqəli məlumatları içərməlidir (məsələn, vaxt limitləri, ləğvlər).
  • Biznes məlumatlarının kontekst vasitəsilə ötürülməsi kodu çətinləşdirir və oxunaqlığını azaldır.

Düzgün yanaşma, lazım olan məlumatları funksiyaların parametrləri vasitəsilə açıq şəkildə ötürmək və ya məlumat mübadiləsi üçün digər strukturlardan istifadə etməkdir.

Sorğu ilə əlaqəli dəyəri ötürmək üçün kontekstdən istifadə nümunəsi:

ctx := context.WithValue(context.Background(), "userID", 12345)
userID := ctx.Value("userID")

Ancaq, bu yanaşmadan, əməliyyatın həyat dövrünü idarə etmək üçün həqiqətən lazım olmadıqda, komponentlər arasında məlumat ötürmək üçün istifadə etmək daha yaxşıdır.