𝗚𝗼 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗣𝗮𝗰𝗸𝗮𝗴𝗲

বেশিরভাগ Go ডেভেলপার context.Context এর সঠিক ধারণা ছাড়াই এটি ব্যবহার করেন। আপনি এটি HTTP handlers, database calls এবং SDK methods-এ দেখতে পাবেন। অনেক নতুন ডেভেলপার সব জায়গায় context.Background() পাস করে দেন।

এই ভুলটি সমস্যার সৃষ্টি করে। একটি Lambda function তার timeout সময়ের পরেও আটকে থাকতে পারে। একজন ব্যবহারকারী ডিসকানেক্ট হয়ে যাওয়ার পরেও একটি database query চলতে থাকতে পারে।

Context আপনাকে আপনার কোডের মাধ্যমে cancellation signals এবং deadlines পাঠাতে সাহায্য করে। এটি আপনাকে তিনটি প্রশ্নের উত্তর দিতে সাহায্য করে:

• এই অপারেশনটি কি চলতে থাকা উচিত? • এই অপারেশনটি কখন শেষ হতে হবে? • এই কলের সাথে কোন request data প্রবাহিত হচ্ছে?

Context interface-এ চারটি method রয়েছে:

Context একটি tree হিসেবে কাজ করে। আপনি একটি parent context দিয়ে শুরু করেন এবং এর থেকে child context তৈরি করেন।

Root Contexts:

Child Contexts:

অত্যন্ত গুরুত্বপূর্ণ নিয়ম: সবসময় cancel function কল করুন। একটি child context তৈরি করার পরপরই defer cancel() ব্যবহার করুন। আপনি যদি এটি এড়িয়ে যান, তবে memory leaks তৈরি হতে পারে।

Best Practices:

যখন একটি parent context cancel হয়, তখন এর সমস্ত child context স্বয়ংক্রিয়ভাবে cancel হয়ে যায়। এটি আপনার পুরো সিস্টেম জুড়ে অপারেশনের একটি সম্পূর্ণ চেইন থামানো সহজ করে তোলে।

Source: https://dev.to/ferztyle/go-context-package-37nk