Sobes.tech
Junior — Middle

Контекстти компоненттер же функциялар арасында маалыматтарды өткөрүү үчүн колдонсо болотпу?

sobes.tech AI

AIден жооп

Goда, (context.Context) контексттер — өтінішке немесе операцияға байланысты сигналдарды, уақыт шектерін және мәндерді горутиндер мен функциялар арасында жеткізу үшін арналған. Алайда, контекстті компоненттер немесе функциялар арасында кездейсоқ деректерді жеткізу үшін пайдалану ұсынылмайды.

Себептері:

  • Контекст тек операцияның өмірлік циклін басқаруға байланысты деректерді қамтуы керек (мысалы, уақыт шектері, тоқтату).
  • Бизнестің деректерін контекст арқылы жеткізу кодты күрделендіреді және оқылуын төмендетеді.

Дұрыс тәсіл — қажетті деректерді функция параметрлері арқылы нақты жеткізу немесе деректер алмасу үшін басқа құрылымдарды пайдалану.

Мысал ретінде сұраумен байланысты мәнді жеткізу үшін контекстті пайдалану:

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

Бірақ, бұл тәсілді компоненттер арасында деректерді жеткізу үшін, егер ол шын мәнінде операцияның өмірлік циклін басқару үшін қажет болмаса, қолданбаған дұрыс.