From cd738e0951e014562641ae654faa91b333c26d8d Mon Sep 17 00:00:00 2001 From: musiur Date: Sun, 23 Mar 2025 15:16:14 +0600 Subject: [PATCH 1/7] add content index in basic-questions.md --- basic-questions.md | 122 +++++++++++++++++++++++++++++++++------------ 1 file changed, 89 insertions(+), 33 deletions(-) diff --git a/basic-questions.md b/basic-questions.md index 813e7cc..5655c61 100644 --- a/basic-questions.md +++ b/basic-questions.md @@ -1,5 +1,19 @@ + # Golang Interview Questions and Answers (BASIC) +## কন্টেন্ট সূচি + +- [১। What is scope?](##what-is-scope) +- [২। What is block?](##what-is-block) +- [৩। What is standard or named function?](##what-is-standard-or-named-function) +- [৪। What is anonymous function?](##what-is-anonymous-function) +- [৫। What is expression?](##what-is-expression) +- [৬। What is statement?](##what-is-statement) +- [৭। What is pointer?](##what-is-pointer) +- [৮। What is pass by value vs pass by reference?](##what-is-pass-by-value-vs-pass-by-reference) +- [৯। What is package?](##what-is-package) +- [১০। What is import?](##what-is-import) + ## ১। What is scope? স্কোপ হলো একটি নির্দিষ্ট অংশ যেখানে কোনো ভেরিয়েবল বা ফাংশনকে অ্যাক্সেস বা ব্যবহার করা যায়। @@ -12,7 +26,7 @@ **গ্লোবাল স্কোপ (Global Scope):** যদি কোনো ভেরিয়েবল বা ফাংশন প্যাকেজ লেভেলে ডিক্লেয়ার করা হয়, তাহলে তা পুরো প্রোগ্রামের মধ্যে অ্যাক্সেসযোগ্য হয়। এটাকে গ্লোবাল স্কোপ বলে। -### উদাহরণ: +### উদাহরণ ```go package main @@ -33,13 +47,15 @@ func anotherFunction() { // fmt.Println(localVar) // এটা কাজ করবে না, কারণ localVar লোকাল স্কোপে আছে } ``` + --- ## ২। What is block? Block বলতে একটি নির্দিষ্ট অঞ্চল বা সীমানা বোঝায়, যা `{}` দ্বারা আবদ্ধ থাকে। এই ব্লকের মধ্যে যেকোনো কোড লেখা হয় এবং তা একটি নির্দিষ্ট স্কোপ (Scope) তৈরি করে। ব্লকের ভিতরে ডিক্লেয়ার করা ভেরিয়েবল বা ফাংশন শুধুমাত্র ঐ ব্লকের মধ্যেই অ্যাক্সেসযোগ্য হয়। -### উদাহরণ: (Nested Block Scope): +### উদাহরণ: (Nested Block Scope) + ```go func nestedBlockExample() { a := 5 @@ -65,7 +81,8 @@ func nestedBlockExample() { Standard বা Named Function হলো এমন একটি ফাংশন যার একটি নির্দিষ্ট নাম থাকে। ফাংশন কল করার জন্য এই নামটি ব্যবহার করা হয়। -### উদাহরণ: +### উদাহরণ + ```go package main import "fmt" @@ -81,6 +98,7 @@ func main() { fmt.Println("যোগফল:", result) // আউটপুট: যোগফল: 12 } ``` + ``` - addNumbers হলো একটি standard or Named Function ফাংশন। - এটি দুটি প্যারামিটার (a এবং b) গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে। @@ -94,7 +112,8 @@ func main() { Anonymous Function বলতে এমন ফাংশনকে বোঝায় যার কোনো নাম থাকে না। এই ফাংশনগুলো সাধারণত তখনই ব্যবহার করা হয় যখন আমাদের ফাংশনটি শুধুমাত্র একটি নির্দিষ্ট জায়গায় ব্যবহার করার প্রয়োজন হয়, এবং এটিকে পুনরায় ব্যবহার করার দরকার হয় না। -### উদাহরণ: +### উদাহরণ + ```go package main import "fmt" @@ -113,7 +132,8 @@ func main() { Expression হলো প্রোগ্রামিং-এ এমন একটি কোডের অংশ যা কোনো নির্দিষ্ট মান (value) তৈরি করে। অন্য কথায়, যখন কোনো কোড একটি ফলাফল বা আউটপুট দেয়, তখন সেই কোডকে এক্সপ্রেশন বলা হয়। -### উদাহরণ: +### উদাহরণ + ```go - result := 2 + 3 // এটি একটি গাণিতিক এক্সপ্রেশন - isTrue := (5 > 3) && (10 < 20) // এটি একটি লজিক্যাল এক্সপ্রেশন @@ -130,7 +150,8 @@ result := add(4, 6) // এটি একটি ফাংশন কল এক্ ফাংশন এক্সপ্রেশন (Function Expression) বলতে এমন একটি ফাংশনকে বোঝায় যা একটি ভেরিয়েবলের মধ্যে স্টোর করা হয়। -### উদাহরণ: +### উদাহরণ + ```go package main import "fmt" @@ -151,7 +172,8 @@ func main() { IIFE - Immediately Invoked Function Expression বলতে এমন একটি ফাংশনকে বোঝায় যা ডিক্লেয়ার করার সাথে সাথে তৎক্ষণাৎ কল করা হয়। অন্য কথায়, এটি একটি ফাংশন যা প্রোগ্রামে লেখার সময়ই এক্সিকিউট হয়ে যায়। এই ফাংশনটি শুধুমাত্র একবার ব্যবহার করা হয়, এবং পরে এটি পুনরায় কল করা যায় না। -### উদাহরণ: +### উদাহরণ + ```go package main import "fmt" @@ -170,7 +192,8 @@ func main() { **Parameter:** প্যারামিটার হল ফাংশন ডিফাইন করার সময় যে ভেরিয়েবলগুলো ব্যবহার করা হয়। এগুলো মূলত ফাংশনের জন্য একটা প্লেসহোল্ডার হিসেবে কাজ করে। **Argument:** আর্গুমেন্ট হল ফাংশন কল করার সময় যে ডাটাগুলি পাস করা হয়। পাস করা ডাটাগুলি প্যারামিটারে অ্যাসাইন হয়ে ফাংশনের কাজ চালায়। -### উদাহরণ: +### উদাহরণ + ```go func add(a, b int) int { // a এবং b হল প্যারামিটার return a + b @@ -188,7 +211,8 @@ Higher-order function বলতে এমন ফাংশনকে বোঝা **Why we call Higher Order Function >< First class function** যেহুতু higher order function আরেকটা ফাংশনকে রিসিভ করতে পারে & ফাংশনটি একটি ভেরিয়েবলে স্টোর করা যায় as like first class citizen তাই higher order function কে first class function বলা হয়। -### উদাহরণ: +### উদাহরণ + ```go // 1. ফাংশনকে প্যারামিটার হিসেবে গ্রহণ করা: @@ -232,6 +256,7 @@ func main() { হাইয়ার অর্ডার ফাংশন হলো এমন ফাংশন যা অন্য ফাংশনকে প্যারামিটার হিসেবে গ্রহণ করে অথবা অন্য ফাংশনকে রিটার্ন করে। এটি ফাংশনের উপর কাজ করে এবং ফাংশনকে ডেটা হিসেবে ব্যবহার করে। --- + ## ১৩। Difference between first order logic and higher order logic **First Order Logic:** @@ -246,12 +271,12 @@ Higher-Order Logic এমন একটি লজিক সিস্টেম য **বিঃদ্রঃ** GO প্রোগ্রামিং-এ, ফার্স্ট-অর্ডার লজিক হলো সাধারণ ফাংশন যেগুলো শুধু ডেটা নিয়ে কাজ করে। আর হায়ার-অর্ডার লজিক হলো ফাংশন যেগুলো অন্য ফাংশন নিয়ে কাজ করে। - ## ১৪। What is callback function? Callback Function হলো এমন একটি ফাংশন যা অন্য একটি ফাংশনের ভিতরে প্যারামিটার হিসেবে পাঠানো হয় এবং প্রথম ফাংশনটি যখন প্রয়োজন হয়, তখন এই কলব্যাক ফাংশনটিকে কল করে। অন্য কথায়, কলব্যাক ফাংশন হলো এমন একটি ফাংশন যা অন্য ফাংশনের দ্বারা "কল করার" জন্য পাঠানো হয়। -### উদাহরণ: +### উদাহরণ + ```go // একটি ফাংশন যা কলব্যাক ফাংশন গ্রহণ করে func calculate(a int, b int, operation func(int, int) int) int { @@ -283,14 +308,17 @@ func main() { --- ### ১৫। What is the first-class citizen? + First-Class Citizen বলতে বোঝায় যা প্রোগ্রামের মধ্যে অন্য যেকোনো ডেটা টাইপের মতোই ব্যবহার করা যায়। GO-তে ফাংশন হলো ফার্স্ট ক্লাস সিটিজেন, কারণ ফাংশনকে ভেরিয়েবলে স্টোর করা, প্যারামিটার হিসেবে পাঠানো, অথবা অন্য ফাংশন থেকে রিটার্ন করা যায়। --- ### ১৬। What is init function? + **init ফাংশন** হলো একটি বিশেষ ফাংশন যা কোনো প্যাকেজ বা ফাইল লোড হওয়ার সময় অটোমেটিকভাবে একবার কল হয়। এটি প্রোগ্রামের প্রাথমিক সেটআপ বা ইনিশিয়ালাইজেশন কাজে ব্যবহৃত হয়, যেমন: ভেরিয়েবল ইনিশিয়ালাইজ করা, ডাটাবেস কানেকশন তৈরি করা, কনফিগারেশন লোড করা ইত্যাদি। -#### উদাহরণ: +#### উদাহরণ + ```go // package.go package mypackage @@ -313,6 +341,7 @@ func main() { ``` **আউটপুট:** + ``` Init from mypackage Main function @@ -323,6 +352,7 @@ Main function ### ১৭। Difference between compile time and run time #### **কম্পাইল টাইম (Compile Time):** + - কম্পাইল টাইম হলো যখন প্রোগ্রামটি কম্পাইলার দ্বারা কম্পাইল করা হয়। এই সময়ে কম্পাইলার প্রোগ্রামের সোর্স কোডকে মেশিন কোডে (বাইনারি কোড) রূপান্তর করে। - এই ধাপে কোডের সিনট্যাক্স (যেমন: একটি সেমিকোলন ; মিস করেন) এবং কিছু লজিক্যাল ভুল ধরা পড়ে। যদি কোডে কোনো ভুল থাকে, তবে কম্পাইলার সেটি চিহ্নিত করে এবং প্রোগ্রামটি run হবার আগেই প্রোগ্রামারকে জানিয়ে দেয়। @@ -330,6 +360,7 @@ Main function **উদাহরণ:** ধরা যাক, আপনি একটি প্রোগ্রামে একটি ভেরিয়েবল ব্যবহার করেছেন কিন্তু সেটি ডিক্লেয়ার করেননি। এই ভুলটি কম্পাইল টাইমে ধরা পড়বে, এবং কম্পাইলার একটি এরর মেসেজ দেখাবে, যেমন "undefined variable"। #### **রান টাইম (Run Time):** + - রান টাইম হলো যখন প্রোগ্রামটি চালু অবস্থায় থাকে এবং এক্সিকিউট হয়। এই সময়ে প্রোগ্রামটি ব্যবহারকারীর ইনপুট নেয়, ডেটা প্রসেস করে এবং আউটপুট দেয়। - এই ধাপে প্রোগ্রামটি ইনপুট নেয়, সেই ইনপুট প্রসেস করে, এবং আউটপুট দেয়। রান টাইমে কিছু ভুল ধরা পড়তে পারে যা কম্পাইল টাইমে ধরা পড়েনি, যেমন লজিক্যাল ভুল বা রানটাইম এরর (যেমন শূন্য দিয়ে ভাগ করা)। @@ -339,9 +370,11 @@ Main function --- ### ১৮। What is escape analysis? + Escape Analysis হলো গো (Go) প্রোগ্রামিং-এর একটি অপটিমাইজেশন টুল বা প্রক্রিয়া, যা কম্পাইলার দ্বারা ব্যবহৃত হয়। এটি ডিসাইড করে যে কোনো ভেরিয়েবল বা ডেটা ফাংশনের বাইরে ব্যবহার হতে পারে কিনা । এই বিশ্লেষণের উপর ভিত্তি করে কম্পাইলার ডিসাইড করে যে ভেরিয়েবলটি মেমোরির স্ট্যাক (Stack) নাকি হিপ (Heap) - এ store করা হবে। -#### উদাহরণ: +#### উদাহরণ + ```go func createPointer() *int { x := 42 // x একটি ভেরিয়েবল @@ -355,6 +388,7 @@ func main() { fmt.Println(*p) } ``` + ``` এখানে x ভেরিয়েবলটি createPointer ফাংশনের ভিতরে তৈরি হয়েছে, কিন্তু এর পয়েন্টার ফাংশনের বাইরে রিটার্ন করা হয়েছে। তাই x ফাংশনের বাইরে ব্যবহার হতে পারে। @@ -363,13 +397,14 @@ fmt.Println(*p) --- -### ১৯। Describe 2 phases of running a Go program: +### ১৯। Describe 2 phases of running a Go program **১। In the Compilation Phase:** এই Phase এ GO কম্পাইলার সোর্স কোডকে মেশিন কোডে (Executable Binary Code) রূপান্তর করে ও সিনট্যাক্স এবং টাইপ চেকিং করে। **২। In the Execution Phase:** এই Phase এ compiled binary code system এ run হয় এবং executing the program's logic. -#### উদাহরণ: +#### উদাহরণ + ```bash go build main.go # Compilation Phase (creates an executable) ./main # Execution Phase (runs the program) @@ -378,10 +413,12 @@ go build main.go # Compilation Phase (creates an executable) --- ### ২০। What is closure in Go? -ক্লোজার(closure) হলো এমন একটি ফাংশন যা তার নিজের স্কোপের বাইরের ভেরিয়েবলগুলোকে "মনে রাখে" এমনকি বাইরের ফাংশনের execution শেষ হবার পরেও এবং সেগুলোকে ব্যবহার করতে পারে। -উদাহরণ: -#### উদাহরণ: +ক্লোজার(closure) হলো এমন একটি ফাংশন যা তার নিজের স্কোপের বাইরের ভেরিয়েবলগুলোকে "মনে রাখে" এমনকি বাইরের ফাংশনের execution শেষ হবার পরেও এবং সেগুলোকে ব্যবহার করতে পারে। +উদাহরণ: + +#### উদাহরণ + ```go package main import "fmt" @@ -409,9 +446,11 @@ func main() { --- ### ২১। What is struct in Go? + **Struct** হলো গো (Go) প্রোগ্রামিং-এর একটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। এটি একটি কাস্টম ডেটা টাইপ যা বিভিন্ন ধরনের ডেটা ফিল্ড (ভেরিয়েবল) একত্রে গ্রুপ করে রাখতে ব্যবহৃত হয়। স্ট্রাক্ট ব্যবহার করে আমরা একটি একক ইউনিটে বিভিন্ন ধরনের ডেটা (যেমন: স্ট্রিং, ইন্টিজার, বুলিয়ান ইত্যাদি) সংরক্ষণ করতে পারি। -#### উদাহরণ: +#### উদাহরণ + ```go package main import "fmt" @@ -433,11 +472,14 @@ func main() { --- ### ২২। What is an instance? + **Instance** হলো যখন আমরা একটি struct বা কোনো কাস্টম ডেটা টাইপের জন্য একটি ভেরিয়েবল তৈরি করি, তখন সেই ভেরিয়েবলটিকে ওই ডেটা টাইপের একটি ইনস্ট্যান্স বলা হয়। + - ডেটা টাইপ হলো একটি ব্লুপ্রিন্ট বা প্ল্যান (যেমন: struct), এবং ইনস্ট্যান্স হলো সেই প্ল্যান অনুযায়ী তৈরি একটি বাস্তব অবজেক্ট। - উদাহরণস্বরূপ, যদি আমরা একটি struct ডিক্লেয়ার করি যা "ব্যক্তি" (Person) প্রতিনিধিত্ব করে, তাহলে একটি বাস্তব ব্যক্তির ডেটা ধারণ করার জন্য যে ভেরিয়েবলটি তৈরি করা হয়, সেটি হলো একটি ইনস্ট্যান্স। -#### উদাহরণ: +#### উদাহরণ + ```go package main import "fmt" @@ -457,6 +499,7 @@ func main() { } ``` + ``` ব্যাখ্যা: Person হলো একটি স্ট্রাক্ট (ব্লুপ্রিন্ট)। @@ -467,13 +510,15 @@ p1 এবং p2 হলো Person স্ট্রাক্টের দুটি --- ### ২৩। What are member variables? + Go প্রোগ্রামিং ভাষায় মেম্বার ভেরিয়েবল হল সেই সকল ভেরিয়েবল যা একটি Struct এর ভিতরে Define করা হয়। এগুলিকে আমরা 'ফিল্ড' (Fields) হিসেবেও উল্লেখ করি। স্ট্রাক্টের মেম্বার ভেরিয়েবলগুলি যেকোনো ডাটা টাইপের হতে পারে, যেমন: **প্রাথমিক টাইপ** (int, string, bool) **জটিল টাইপ** (array, slice, map) -#### উদাহরণ: +#### উদাহরণ + ```go type কর্মচারী struct { আইডি int @@ -484,6 +529,7 @@ type কর্মচারী struct { দক্ষতা []string } ``` + ``` এখানে, কর্মচারী স্ট্রাক্টে নিম্নলিখিত মেম্বার ভেরিয়েবল আছে: আইডি: একটি integer ফিল্ড @@ -498,13 +544,14 @@ type কর্মচারী struct { --- ### ২৪। What is instantiation? + **Instantiation** হলো একটি ডেটা টাইপের জন্য একটি ইনস্ট্যান্স তৈরি করার পদ্ধতি। - ডেটা টাইপ হলো একটি ব্লুপ্রিন্ট বা প্ল্যান (যেমন: struct), এবং ইনস্ট্যান্টিয়েশন হলো সেই প্ল্যান অনুযায়ী একটি বাস্তব অবজেক্ট তৈরি করা। - উদাহরণস্বরূপ, যদি আমরা একটি struct ডিক্লেয়ার করি যা "ব্যক্তি" (Person) প্রতিনিধিত্ব করে, তাহলে একটি বাস্তব ব্যক্তির ডেটা ধারণ করার জন্য যে ভেরিয়েবলটি তৈরি করা হয়, সেটি হলো ওই struct-এর একটি ইনস্ট্যান্স , এবং এই প্রক্রিয়াটিকে বলা হয় ইনস্ট্যান্টিয়েশ। +#### উদাহরণ -#### উদাহরণ: ```go package main import "fmt" @@ -524,6 +571,7 @@ Output: Person 1: {John 30} Person 2: {Alice 25} ``` + ``` ব্যাখ্যা: Person হলো একটি স্ট্রাক্ট (ব্লুপ্রিন্ট)। @@ -534,9 +582,11 @@ p1 এবং p2 হলো Person স্ট্রাক্টের দুটি --- ### ২৫। What is the receiver function? + Go ভাষায় "receiver function" হল একটি মেথড যেটি একটি নির্দিষ্ট টাইপের সাথে যুক্ত থাকে। এই মেথডগুলি একটি স্ট্রাক্ট (struct) বা অন্য কোনো টাইপের উপর অপারেশন সম্পাদন করতে ব্যবহৃত হয়। রিসিভার ফাংশন ডিফাইন করার সময় ফাংশনের নামের আগে একটি রিসিভার প্যারামিটার যোগ করা হয়, যা নির্দেশ করে যে এই মেথডটি কোন টাইপের সাথে যুক্ত। -#### উদাহরণ: +#### উদাহরণ + ```go // একটি স্ট্রাক্ট ডিফাইন করা type Rectangle struct { @@ -554,19 +604,20 @@ func main() { } ``` -বিঃদ্রঃ এই উদাহরণে, Area ফাংশনটি Rectangle টাইপের একটি রিসিভার ফাংশন। rect.Area() কল করার মাধ্যমে Rectangle টাইপের rect অবজেক্টের উপর এই মেথডটি কাজ করে। +বিঃদ্রঃ এই উদাহরণে, Area ফাংশনটি Rectangle টাইপের একটি রিসিভার ফাংশন। rect.Area() কল করার মাধ্যমে Rectangle টাইপের rect অবজেক্টের উপর এই মেথডটি কাজ করে। ---- +--- ### ২৬। Difference between expression and statement + **Expression (এক্সপ্রেশন):** Expression হল এমন একটি কোড অংশ যা একটি মান (value) তৈরি করে। এটি একটি ভ্যারিয়েবল, কনস্ট্যান্ট, অপারেটর, বা ফাংশন কলের সমন্বয়ে গঠিত হতে পারে। প্রতিটি এক্সপ্রেশন একটি নির্দিষ্ট মানে রূপান্তরিত হয়, যেমন: সংখ্যা, স্ট্রিং, বুলিয়ান ইত্যাদি। **Statement (স্টেটমেন্ট):** Statement হল এমন একটি কোড অংশ যা একটি নির্দিষ্ট কাজ (action) সম্পাদন করে। এটি প্রোগ্রামের এক্সিকিউশন ফ্লো নিয়ন্ত্রণ করে বা কোনো কাজ সম্পাদন করে, যেমন: ভ্যারিয়েবল ডিক্লেয়ার করা, লুপ চালানো, শর্ত পরীক্ষা করা ইত্যাদি। স্টেটমেন্ট সাধারণত কোনো মান তৈরি করে না, বরং এটি প্রোগ্রামের আচরণ পরিবর্তন করে। -## পার্থক্য সংক্ষেপে: +## পার্থক্য সংক্ষেপে | **বিষয়** | **Expression (এক্সপ্রেশন)** | **Statement (স্টেটমেন্ট)** | |-------------------------|------------------------------------|------------------------------------| @@ -574,7 +625,8 @@ Statement হল এমন একটি কোড অংশ যা একটি | **উদাহরণ** | `x + y`, `5 * 3` | `x = 10`, `if x > 5` | | **প্রোগ্রামের আচরণ** | প্রোগ্রামের আচরণ পরিবর্তন করে না। | প্রোগ্রামের আচরণ পরিবর্তন করে। | -#### উদাহরণ: +#### উদাহরণ + ```go package main import "fmt" @@ -592,14 +644,15 @@ func main() { } ``` + --- -### ২৭। what is pointer? And difference between pass by value vs pass by reference. +### ২৭। what is pointer? And difference between pass by value vs pass by reference **Pointer:** Pointer হলো একটি ভেরিয়েবল যা অন্য একটি ভেরিয়েবলের মেমোরি অ্যাড্রেস স্টোর করে। সহজ কথায়, পয়েন্টার আমাদের বলে দেয় যে, কোনো ডেটা মেমরির কোন স্থানে আছে, এবং আমরা সেই স্থানে গিয়ে ডেটার সাথে কাজ করতে পারি। -#### উদাহরণ: +#### উদাহরণ ```go package main @@ -616,14 +669,15 @@ func main() { fmt.Println("p এর মাধ্যমে x এর মান:", *p) // আউটপুট: 10 } ``` + **বিঃদ্রঃ** এখানে p হল পয়েন্টার এবং *p দিয়ে আমরা x এর মান অ্যাক্সেস করতে পারি। -### Difference between pass by value vs pass by reference. +### Difference between pass by value vs pass by reference **Pass by value:** যখন আমরা একটি ফাংশনে কোনো আর্গুমেন্ট পাস বাই ভ্যালু হিসেবে পাঠাই, তখন সেই আর্গুমেন্টের একটি কপি তৈরি হয় এবং ফাংশন সেই কপি নিয়ে কাজ করে। ফাংশনের ভিতরে কপির মান পরিবর্তন হলেও মূল ভেরিয়েবলের মান অপরিবর্তিত থাকে। -#### উদাহরণ: +#### উদাহরণ ```go package main @@ -641,10 +695,12 @@ func main() { fmt.Println("ফাংশনের বাইরে x:", x) // আউটপুট: 10 (মূল মান অপরিবর্তিত) } ``` + **Pass by Reference:** পাস বাই রেফারেন্সে আর্গুমেন্টের মেমরি অ্যাড্রেস (পয়েন্টার) ফাংশনে পাঠানো হয়। ফাংশন সেই অ্যাড্রেস ব্যবহার করে মূল ভেরিয়েবলের মান পরিবর্তন করতে পারে। -#### উদাহরণ: +#### উদাহরণ + ```go package main @@ -661,7 +717,7 @@ func main() { ``` -#### পার্থক্য সংক্ষেপে: +#### পার্থক্য সংক্ষেপে | **বিষয়** | **Pass By Value** | **Pass By Reference** | |-------------------------|---------------------------------------|-------------------------------------| From 8b2a3089c60d90b622d18ebd01d39d1a33fad256 Mon Sep 17 00:00:00 2001 From: musiur Date: Sun, 23 Mar 2025 15:17:24 +0600 Subject: [PATCH 2/7] fix content index in basic-questions.md --- basic-questions.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/basic-questions.md b/basic-questions.md index 5655c61..8ed7c7b 100644 --- a/basic-questions.md +++ b/basic-questions.md @@ -3,16 +3,16 @@ ## কন্টেন্ট সূচি -- [১। What is scope?](##what-is-scope) -- [২। What is block?](##what-is-block) -- [৩। What is standard or named function?](##what-is-standard-or-named-function) -- [৪। What is anonymous function?](##what-is-anonymous-function) -- [৫। What is expression?](##what-is-expression) -- [৬। What is statement?](##what-is-statement) -- [৭। What is pointer?](##what-is-pointer) +- [১। What is scope?](#what-is-scope) +- [২। What is block?](#what-is-block) +- [৩। What is standard or named function?](#what-is-standard-or-named-function) +- [৪। What is anonymous function?](#what-is-anonymous-function) +- [৫। What is expression?](#what-is-expression) +- [৬। What is statement?](#what-is-statement) +- [৭। What is pointer?](#what-is-pointer) - [৮। What is pass by value vs pass by reference?](##what-is-pass-by-value-vs-pass-by-reference) -- [৯। What is package?](##what-is-package) -- [১০। What is import?](##what-is-import) +- [৯। What is package?](#what-is-package) +- [১০। What is import?](#what-is-import) ## ১। What is scope? From a921b1f93135de8f174a9952d7fc02100a8a6db6 Mon Sep 17 00:00:00 2001 From: musiur Date: Sun, 23 Mar 2025 15:18:11 +0600 Subject: [PATCH 3/7] fix content index in basic-questions.md iterate 2 --- basic-questions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basic-questions.md b/basic-questions.md index 8ed7c7b..aefda10 100644 --- a/basic-questions.md +++ b/basic-questions.md @@ -10,7 +10,7 @@ - [৫। What is expression?](#what-is-expression) - [৬। What is statement?](#what-is-statement) - [৭। What is pointer?](#what-is-pointer) -- [৮। What is pass by value vs pass by reference?](##what-is-pass-by-value-vs-pass-by-reference) +- [৮। What is pass by value vs pass by reference?](#what-is-pass-by-value-vs-pass-by-reference) - [৯। What is package?](#what-is-package) - [১০। What is import?](#what-is-import) From 9faa4a7c34a9cb07481a7fdca2c3a1b88253b776 Mon Sep 17 00:00:00 2001 From: musiur Date: Sun, 23 Mar 2025 15:20:37 +0600 Subject: [PATCH 4/7] fix content index in basic-questions.md iterate 3 --- basic-questions.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/basic-questions.md b/basic-questions.md index aefda10..81acb8b 100644 --- a/basic-questions.md +++ b/basic-questions.md @@ -3,16 +3,16 @@ ## কন্টেন্ট সূচি -- [১। What is scope?](#what-is-scope) -- [২। What is block?](#what-is-block) -- [৩। What is standard or named function?](#what-is-standard-or-named-function) -- [৪। What is anonymous function?](#what-is-anonymous-function) -- [৫। What is expression?](#what-is-expression) -- [৬। What is statement?](#what-is-statement) -- [৭। What is pointer?](#what-is-pointer) -- [৮। What is pass by value vs pass by reference?](#what-is-pass-by-value-vs-pass-by-reference) -- [৯। What is package?](#what-is-package) -- [১০। What is import?](#what-is-import) +- [১। What is scope?](#১-what-is-scope) +- [২। What is block?](#২-what-is-block) +- [৩। What is standard or named function?](#৩-what-is-standard-or-named-function) +- [৪। What is anonymous function?](#৪-what-is-anonymous-function) +- [৫। What is expression?](#৫-what-is-expression) +- [৬। What is statement?](#৬-what-is-statement) +- [৭। What is pointer?](#৭-what-is-pointer) +- [৮। What is pass by value vs pass by reference?](#৮-what-is-pass-by-value-vs-pass-by-reference) +- [৯। What is package?](#৯-what-is-package) +- [১০। What is import?](#১০-what-is-import) ## ১। What is scope? From a8d767ff35c647a77ee88d71329453c584854b7c Mon Sep 17 00:00:00 2001 From: musiur Date: Sun, 23 Mar 2025 15:30:08 +0600 Subject: [PATCH 5/7] fix content index in basic-questions.md iterate 4 --- basic-questions.md | 76 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 15 deletions(-) diff --git a/basic-questions.md b/basic-questions.md index 81acb8b..6d56ce4 100644 --- a/basic-questions.md +++ b/basic-questions.md @@ -3,16 +3,62 @@ ## কন্টেন্ট সূচি -- [১। What is scope?](#১-what-is-scope) -- [২। What is block?](#২-what-is-block) -- [৩। What is standard or named function?](#৩-what-is-standard-or-named-function) -- [৪। What is anonymous function?](#৪-what-is-anonymous-function) -- [৫। What is expression?](#৫-what-is-expression) -- [৬। What is statement?](#৬-what-is-statement) -- [৭। What is pointer?](#৭-what-is-pointer) -- [৮। What is pass by value vs pass by reference?](#৮-what-is-pass-by-value-vs-pass-by-reference) -- [৯। What is package?](#৯-what-is-package) -- [১০। What is import?](#১০-what-is-import) +- [Golang Interview Questions and Answers (BASIC)](#golang-interview-questions-and-answers-basic) + - [কন্টেন্ট সূচি](#কন্টেন্ট-সূচি) + - [১। What is scope?](#১-what-is-scope) + - [উদাহরণ](#উদাহরণ) + - [২। What is block?](#২-what-is-block) + - [উদাহরণ: (Nested Block Scope)](#উদাহরণ-nested-block-scope) + - [৩। How many types of scopes are there available on Golang?](#৩-how-many-types-of-scopes-are-there-available-on-golang) + - [৪। What is the standard or named function?](#৪-what-is-the-standard-or-named-function) + - [উদাহরণ](#উদাহরণ-1) + - [৫। What is anonymous function?](#৫-what-is-anonymous-function) + - [উদাহরণ](#উদাহরণ-2) + - [৬। What is expression?](#৬-what-is-expression) + - [উদাহরণ](#উদাহরণ-3) + - [৭। What is function expression?](#৭-what-is-function-expression) + - [উদাহরণ](#উদাহরণ-4) + - [৮। What is immediately invoked function expression (IIFE)?](#৮-what-is-immediately-invoked-function-expression-iife) + - [উদাহরণ](#উদাহরণ-5) + - [৯। Difference between arguments and parameters](#৯-difference-between-arguments-and-parameters) + - [উদাহরণ](#উদাহরণ-6) + - [১০। What is first-class function or higher-order function?](#১০-what-is-first-class-function-or-higher-order-function) + - [উদাহরণ](#উদাহরণ-7) + - [১১। Difference between first-order function and higher-order function](#১১-difference-between-first-order-function-and-higher-order-function) + - [১২। Difference between first order logic and higher order logic](#১২-difference-between-first-order-logic-and-higher-order-logic) + - [১৩। What is callback function?](#১৩-what-is-callback-function) + - [উদাহরণ](#উদাহরণ-8) + - [১৫। What is the first-class citizen?](#১৫-what-is-the-first-class-citizen) + - [১৬। What is init function?](#১৬-what-is-init-function) + - [উদাহরণ](#উদাহরণ-9) + - [১৭। Difference between compile time and run time](#১৭-difference-between-compile-time-and-run-time) + - [**কম্পাইল টাইম (Compile Time):**](#কম্পাইল-টাইম-compile-time) + - [**রান টাইম (Run Time):**](#রান-টাইম-run-time) + - [১৮। What is escape analysis?](#১৮-what-is-escape-analysis) + - [উদাহরণ](#উদাহরণ-10) + - [১৯। Describe 2 phases of running a Go program](#১৯-describe-2-phases-of-running-a-go-program) + - [উদাহরণ](#উদাহরণ-11) + - [২০। What is closure in Go?](#২০-what-is-closure-in-go) + - [উদাহরণ](#উদাহরণ-12) + - [২১। What is struct in Go?](#২১-what-is-struct-in-go) + - [উদাহরণ](#উদাহরণ-13) + - [২২। What is an instance?](#২২-what-is-an-instance) + - [উদাহরণ](#উদাহরণ-14) + - [২৩। What are member variables?](#২৩-what-are-member-variables) + - [উদাহরণ](#উদাহরণ-15) + - [২৪। What is instantiation?](#২৪-what-is-instantiation) + - [উদাহরণ](#উদাহরণ-16) + - [২৫। What is the receiver function?](#২৫-what-is-the-receiver-function) + - [উদাহরণ](#উদাহরণ-17) + - [২৬। Difference between expression and statement](#২৬-difference-between-expression-and-statement) + - [পার্থক্য সংক্ষেপে](#পার্থক্য-সংক্ষেপে) + - [উদাহরণ](#উদাহরণ-18) + - [২৭। what is pointer? And difference between pass by value vs pass by reference](#২৭-what-is-pointer-and-difference-between-pass-by-value-vs-pass-by-reference) + - [উদাহরণ](#উদাহরণ-19) + - [Difference between pass by value vs pass by reference](#difference-between-pass-by-value-vs-pass-by-reference) + - [উদাহরণ](#উদাহরণ-20) + - [উদাহরণ](#উদাহরণ-21) + - [পার্থক্য সংক্ষেপে](#পার্থক্য-সংক্ষেপে-1) ## ১। What is scope? @@ -187,7 +233,7 @@ func main() { --- -## ১০। Difference between arguments and parameters +## ৯। Difference between arguments and parameters **Parameter:** প্যারামিটার হল ফাংশন ডিফাইন করার সময় যে ভেরিয়েবলগুলো ব্যবহার করা হয়। এগুলো মূলত ফাংশনের জন্য একটা প্লেসহোল্ডার হিসেবে কাজ করে। **Argument:** আর্গুমেন্ট হল ফাংশন কল করার সময় যে ডাটাগুলি পাস করা হয়। পাস করা ডাটাগুলি প্যারামিটারে অ্যাসাইন হয়ে ফাংশনের কাজ চালায়। @@ -204,7 +250,7 @@ result := add(3, 5) // 3 এবং 5 হল আর্গুমেন্ট --- -## ১১। What is first-class function or higher-order function? +## ১০। What is first-class function or higher-order function? Higher-order function বলতে এমন ফাংশনকে বোঝায় যা অন্য ভেরিয়েবলের মতোই ব্যবহার করা যায়। অন্য কথায় ফাংশনটি একটি ভেরিয়েবলে স্টোর করা যায়, যে ফাংশন প্যারামিটারের ইনপুট হিসেবে আরেকটা ফানশনকে রিসিভ করতে পারে এবং অন্য ফাংশন থেকে রিটার্ন করা যায়। @@ -247,7 +293,7 @@ func main() { --- -## ১২। Difference between first-order function and higher-order function +## ১১। Difference between first-order function and higher-order function **First-Order Function:** ফার্স্ট অর্ডার ফাংশন হলো এমন ফাংশন যা অন্য কোনো ফাংশনকে প্যারামিটার হিসেবে গ্রহণ করে না এবং অন্য কোনো ফাংশনকে রিটার্নও করে না। এটি শুধুমাত্র নরমাল ডেটা (যেমন: সংখ্যা, স্ট্রিং, অ্যারে ইত্যাদি) নিয়ে কাজ করে। @@ -257,7 +303,7 @@ func main() { --- -## ১৩। Difference between first order logic and higher order logic +## ১২। Difference between first order logic and higher order logic **First Order Logic:** First-Order Logic হলো এমন একটি লজিক সিস্টেম যা শুধুমাত্র Object, Property, Relation নিয়ে কাজ করে। @@ -271,7 +317,7 @@ Higher-Order Logic এমন একটি লজিক সিস্টেম য **বিঃদ্রঃ** GO প্রোগ্রামিং-এ, ফার্স্ট-অর্ডার লজিক হলো সাধারণ ফাংশন যেগুলো শুধু ডেটা নিয়ে কাজ করে। আর হায়ার-অর্ডার লজিক হলো ফাংশন যেগুলো অন্য ফাংশন নিয়ে কাজ করে। -## ১৪। What is callback function? +## ১৩। What is callback function? Callback Function হলো এমন একটি ফাংশন যা অন্য একটি ফাংশনের ভিতরে প্যারামিটার হিসেবে পাঠানো হয় এবং প্রথম ফাংশনটি যখন প্রয়োজন হয়, তখন এই কলব্যাক ফাংশনটিকে কল করে। অন্য কথায়, কলব্যাক ফাংশন হলো এমন একটি ফাংশন যা অন্য ফাংশনের দ্বারা "কল করার" জন্য পাঠানো হয়। From e184601ffe3bbfdee648fe233bc50b2e8b5d13dd Mon Sep 17 00:00:00 2001 From: musiur Date: Sun, 23 Mar 2025 15:32:57 +0600 Subject: [PATCH 6/7] fix content index in basic-questions.md iterate 5 --- basic-questions.md | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/basic-questions.md b/basic-questions.md index 6d56ce4..a1be5d2 100644 --- a/basic-questions.md +++ b/basic-questions.md @@ -1,4 +1,3 @@ - # Golang Interview Questions and Answers (BASIC) ## কন্টেন্ট সূচি @@ -642,7 +641,7 @@ type Rectangle struct { func (r Rectangle) Area() float64 { return r.width * r.height } -func main() { +func main() { // Rectangle টাইপের একটি ইনস্ট্যান্স তৈরি করা rect := Rectangle{width: 10, height: 5} // রিসিভার ফাংশন কল করা @@ -665,11 +664,11 @@ Statement হল এমন একটি কোড অংশ যা একটি ## পার্থক্য সংক্ষেপে -| **বিষয়** | **Expression (এক্সপ্রেশন)** | **Statement (স্টেটমেন্ট)** | -|-------------------------|------------------------------------|------------------------------------| -| **সংজ্ঞা** | একটি মান তৈরি করে। | কোনো কাজ সম্পাদন করে। | -| **উদাহরণ** | `x + y`, `5 * 3` | `x = 10`, `if x > 5` | -| **প্রোগ্রামের আচরণ** | প্রোগ্রামের আচরণ পরিবর্তন করে না। | প্রোগ্রামের আচরণ পরিবর্তন করে। | +| **বিষয়** | **Expression (এক্সপ্রেশন)** | **Statement (স্টেটমেন্ট)** | +| -------------------- | --------------------------------- | ------------------------------ | +| **সংজ্ঞা** | একটি মান তৈরি করে। | কোনো কাজ সম্পাদন করে। | +| **উদাহরণ** | `x + y`, `5 * 3` | `x = 10`, `if x > 5` | +| **প্রোগ্রামের আচরণ** | প্রোগ্রামের আচরণ পরিবর্তন করে না। | প্রোগ্রামের আচরণ পরিবর্তন করে। | #### উদাহরণ @@ -684,7 +683,7 @@ func main() { // Statement if result > 10 { // এটি একটি স্টেটমেন্ট, যা শর্ত পরীক্ষা করে। - + fmt.Println("Result is greater than 10") // এটি একটি স্টেটমেন্ট। } } @@ -716,7 +715,7 @@ func main() { } ``` -**বিঃদ্রঃ** এখানে p হল পয়েন্টার এবং *p দিয়ে আমরা x এর মান অ্যাক্সেস করতে পারি। +**বিঃদ্রঃ** এখানে p হল পয়েন্টার এবং \*p দিয়ে আমরা x এর মান অ্যাক্সেস করতে পারি। ### Difference between pass by value vs pass by reference @@ -757,7 +756,7 @@ func changeValue(num *int) { } func main() { x := 10 - fmt.Println("পরিবর্তনের আগে x:", x) // আউটপুট: 10 + fmt.Println("পরিবর্তনের আগে x:", x) // আউটপুট: 10 changeValue(&x) // x এর মেমরি অ্যাড্রেস পাঠানো হল fmt.Println("পরিবর্তনের পরে x:", x) // আউটপুট: 20 (মূল মান পরিবর্তিত হয়েছে) @@ -765,11 +764,11 @@ func main() { #### পার্থক্য সংক্ষেপে -| **বিষয়** | **Pass By Value** | **Pass By Reference** | -|-------------------------|---------------------------------------|-------------------------------------| -| **ডাটা পাঠানো** | ভেরিয়েবলের মান পাঠানো হয়। | ভেরিয়েবলের মেমরি অ্যাড্রেস পাঠানো হয়। | -| **মূল মান পরিবর্তন** | মূল ভেরিয়েবলের মান পরিবর্তন হয় না। | মূল ভেরিয়েবলের মান পরিবর্তন হয়। | -| **ফাংশনে ডাটা ব্যবহার** | মূল ভেরিয়েবলের একটি কপি তৈরি হয়। | কপি তৈরি হয় না, মূল ভেরিয়েবল ব্যবহার করা হয়। | +| **বিষয়** | **Pass By Value** | **Pass By Reference** | +| ----------------------- | ------------------------------------ | ----------------------------------------------- | +| **ডাটা পাঠানো** | ভেরিয়েবলের মান পাঠানো হয়। | ভেরিয়েবলের মেমরি অ্যাড্রেস পাঠানো হয়। | +| **মূল মান পরিবর্তন** | মূল ভেরিয়েবলের মান পরিবর্তন হয় না। | মূল ভেরিয়েবলের মান পরিবর্তন হয়। | +| **ফাংশনে ডাটা ব্যবহার** | মূল ভেরিয়েবলের একটি কপি তৈরি হয়। | কপি তৈরি হয় না, মূল ভেরিয়েবল ব্যবহার করা হয়। | --- From 7dd6c52031a79d3aa4f6729509b6bf14e0aea990 Mon Sep 17 00:00:00 2001 From: musiur Date: Sun, 23 Mar 2025 23:26:58 +0600 Subject: [PATCH 7/7] chore: reorder in content index of basic question set: pr - #1 --- basic-questions.md | 56 +++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/basic-questions.md b/basic-questions.md index a1be5d2..292cd07 100644 --- a/basic-questions.md +++ b/basic-questions.md @@ -27,34 +27,34 @@ - [১২। Difference between first order logic and higher order logic](#১২-difference-between-first-order-logic-and-higher-order-logic) - [১৩। What is callback function?](#১৩-what-is-callback-function) - [উদাহরণ](#উদাহরণ-8) - - [১৫। What is the first-class citizen?](#১৫-what-is-the-first-class-citizen) - - [১৬। What is init function?](#১৬-what-is-init-function) + - [১৪। What is the first-class citizen?](#১৪-what-is-the-first-class-citizen) + - [১৫। What is init function?](#১৫-what-is-init-function) - [উদাহরণ](#উদাহরণ-9) - - [১৭। Difference between compile time and run time](#১৭-difference-between-compile-time-and-run-time) + - [১৬। Difference between compile time and run time](#১৬-difference-between-compile-time-and-run-time) - [**কম্পাইল টাইম (Compile Time):**](#কম্পাইল-টাইম-compile-time) - [**রান টাইম (Run Time):**](#রান-টাইম-run-time) - - [১৮। What is escape analysis?](#১৮-what-is-escape-analysis) + - [১৭। What is escape analysis?](#১৭-what-is-escape-analysis) - [উদাহরণ](#উদাহরণ-10) - - [১৯। Describe 2 phases of running a Go program](#১৯-describe-2-phases-of-running-a-go-program) + - [১৮। Describe 2 phases of running a Go program](#১৮-describe-2-phases-of-running-a-go-program) - [উদাহরণ](#উদাহরণ-11) - - [২০। What is closure in Go?](#২০-what-is-closure-in-go) + - [১৯। What is closure in Go?](#১৯-what-is-closure-in-go) - [উদাহরণ](#উদাহরণ-12) - - [২১। What is struct in Go?](#২১-what-is-struct-in-go) + - [২০। What is struct in Go?](#২০-what-is-struct-in-go) - [উদাহরণ](#উদাহরণ-13) - - [২২। What is an instance?](#২২-what-is-an-instance) + - [২১। What is an instance?](#২১-what-is-an-instance) - [উদাহরণ](#উদাহরণ-14) - - [২৩। What are member variables?](#২৩-what-are-member-variables) + - [২২। What are member variables?](#২২-what-are-member-variables) - [উদাহরণ](#উদাহরণ-15) - - [২৪। What is instantiation?](#২৪-what-is-instantiation) + - [২৩। What is instantiation?](#২৩-what-is-instantiation) - [উদাহরণ](#উদাহরণ-16) - - [২৫। What is the receiver function?](#২৫-what-is-the-receiver-function) + - [২৪। What is the receiver function?](#২৪-what-is-the-receiver-function) - [উদাহরণ](#উদাহরণ-17) - - [২৬। Difference between expression and statement](#২৬-difference-between-expression-and-statement) + - [২৫। Difference between expression and statement](#২৫-difference-between-expression-and-statement) - [পার্থক্য সংক্ষেপে](#পার্থক্য-সংক্ষেপে) - [উদাহরণ](#উদাহরণ-18) - - [২৭। what is pointer? And difference between pass by value vs pass by reference](#২৭-what-is-pointer-and-difference-between-pass-by-value-vs-pass-by-reference) + - [২৬। what is pointer? And difference between pass by value vs pass by reference](#২৬-what-is-pointer-and-difference-between-pass-by-value-vs-pass-by-reference) - [উদাহরণ](#উদাহরণ-19) - - [Difference between pass by value vs pass by reference](#difference-between-pass-by-value-vs-pass-by-reference) + - [২৭। Difference between pass by value vs pass by reference](#২৭-difference-between-pass-by-value-vs-pass-by-reference) - [উদাহরণ](#উদাহরণ-20) - [উদাহরণ](#উদাহরণ-21) - [পার্থক্য সংক্ষেপে](#পার্থক্য-সংক্ষেপে-1) @@ -352,13 +352,13 @@ func main() { --- -### ১৫। What is the first-class citizen? +### ১৪। What is the first-class citizen? First-Class Citizen বলতে বোঝায় যা প্রোগ্রামের মধ্যে অন্য যেকোনো ডেটা টাইপের মতোই ব্যবহার করা যায়। GO-তে ফাংশন হলো ফার্স্ট ক্লাস সিটিজেন, কারণ ফাংশনকে ভেরিয়েবলে স্টোর করা, প্যারামিটার হিসেবে পাঠানো, অথবা অন্য ফাংশন থেকে রিটার্ন করা যায়। --- -### ১৬। What is init function? +### ১৫। What is init function? **init ফাংশন** হলো একটি বিশেষ ফাংশন যা কোনো প্যাকেজ বা ফাইল লোড হওয়ার সময় অটোমেটিকভাবে একবার কল হয়। এটি প্রোগ্রামের প্রাথমিক সেটআপ বা ইনিশিয়ালাইজেশন কাজে ব্যবহৃত হয়, যেমন: ভেরিয়েবল ইনিশিয়ালাইজ করা, ডাটাবেস কানেকশন তৈরি করা, কনফিগারেশন লোড করা ইত্যাদি। @@ -394,7 +394,7 @@ Main function --- -### ১৭। Difference between compile time and run time +### ১৬। Difference between compile time and run time #### **কম্পাইল টাইম (Compile Time):** @@ -414,7 +414,7 @@ Main function --- -### ১৮। What is escape analysis? +### ১৭। What is escape analysis? Escape Analysis হলো গো (Go) প্রোগ্রামিং-এর একটি অপটিমাইজেশন টুল বা প্রক্রিয়া, যা কম্পাইলার দ্বারা ব্যবহৃত হয়। এটি ডিসাইড করে যে কোনো ভেরিয়েবল বা ডেটা ফাংশনের বাইরে ব্যবহার হতে পারে কিনা । এই বিশ্লেষণের উপর ভিত্তি করে কম্পাইলার ডিসাইড করে যে ভেরিয়েবলটি মেমোরির স্ট্যাক (Stack) নাকি হিপ (Heap) - এ store করা হবে। @@ -442,7 +442,7 @@ fmt.Println(*p) --- -### ১৯। Describe 2 phases of running a Go program +### ১৮। Describe 2 phases of running a Go program **১। In the Compilation Phase:** এই Phase এ GO কম্পাইলার সোর্স কোডকে মেশিন কোডে (Executable Binary Code) রূপান্তর করে ও সিনট্যাক্স এবং টাইপ চেকিং করে। @@ -457,7 +457,7 @@ go build main.go # Compilation Phase (creates an executable) --- -### ২০। What is closure in Go? +### ১৯। What is closure in Go? ক্লোজার(closure) হলো এমন একটি ফাংশন যা তার নিজের স্কোপের বাইরের ভেরিয়েবলগুলোকে "মনে রাখে" এমনকি বাইরের ফাংশনের execution শেষ হবার পরেও এবং সেগুলোকে ব্যবহার করতে পারে। উদাহরণ: @@ -490,7 +490,7 @@ func main() { --- -### ২১। What is struct in Go? +### ২০। What is struct in Go? **Struct** হলো গো (Go) প্রোগ্রামিং-এর একটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। এটি একটি কাস্টম ডেটা টাইপ যা বিভিন্ন ধরনের ডেটা ফিল্ড (ভেরিয়েবল) একত্রে গ্রুপ করে রাখতে ব্যবহৃত হয়। স্ট্রাক্ট ব্যবহার করে আমরা একটি একক ইউনিটে বিভিন্ন ধরনের ডেটা (যেমন: স্ট্রিং, ইন্টিজার, বুলিয়ান ইত্যাদি) সংরক্ষণ করতে পারি। @@ -516,7 +516,7 @@ func main() { --- -### ২২। What is an instance? +### ২১। What is an instance? **Instance** হলো যখন আমরা একটি struct বা কোনো কাস্টম ডেটা টাইপের জন্য একটি ভেরিয়েবল তৈরি করি, তখন সেই ভেরিয়েবলটিকে ওই ডেটা টাইপের একটি ইনস্ট্যান্স বলা হয়। @@ -554,7 +554,7 @@ p1 এবং p2 হলো Person স্ট্রাক্টের দুটি --- -### ২৩। What are member variables? +### ২২। What are member variables? Go প্রোগ্রামিং ভাষায় মেম্বার ভেরিয়েবল হল সেই সকল ভেরিয়েবল যা একটি Struct এর ভিতরে Define করা হয়। এগুলিকে আমরা 'ফিল্ড' (Fields) হিসেবেও উল্লেখ করি। স্ট্রাক্টের মেম্বার ভেরিয়েবলগুলি যেকোনো ডাটা টাইপের হতে পারে, যেমন: @@ -588,7 +588,7 @@ type কর্মচারী struct { --- -### ২৪। What is instantiation? +### ২৩। What is instantiation? **Instantiation** হলো একটি ডেটা টাইপের জন্য একটি ইনস্ট্যান্স তৈরি করার পদ্ধতি। @@ -626,7 +626,7 @@ p1 এবং p2 হলো Person স্ট্রাক্টের দুটি --- -### ২৫। What is the receiver function? +### ২৪। What is the receiver function? Go ভাষায় "receiver function" হল একটি মেথড যেটি একটি নির্দিষ্ট টাইপের সাথে যুক্ত থাকে। এই মেথডগুলি একটি স্ট্রাক্ট (struct) বা অন্য কোনো টাইপের উপর অপারেশন সম্পাদন করতে ব্যবহৃত হয়। রিসিভার ফাংশন ডিফাইন করার সময় ফাংশনের নামের আগে একটি রিসিভার প্যারামিটার যোগ করা হয়, যা নির্দেশ করে যে এই মেথডটি কোন টাইপের সাথে যুক্ত। @@ -654,7 +654,7 @@ func main() { --- -### ২৬। Difference between expression and statement +### ২৫। Difference between expression and statement **Expression (এক্সপ্রেশন):** Expression হল এমন একটি কোড অংশ যা একটি মান (value) তৈরি করে। এটি একটি ভ্যারিয়েবল, কনস্ট্যান্ট, অপারেটর, বা ফাংশন কলের সমন্বয়ে গঠিত হতে পারে। প্রতিটি এক্সপ্রেশন একটি নির্দিষ্ট মানে রূপান্তরিত হয়, যেমন: সংখ্যা, স্ট্রিং, বুলিয়ান ইত্যাদি। @@ -692,7 +692,7 @@ func main() { --- -### ২৭। what is pointer? And difference between pass by value vs pass by reference +### ২৬। what is pointer? And difference between pass by value vs pass by reference **Pointer:** Pointer হলো একটি ভেরিয়েবল যা অন্য একটি ভেরিয়েবলের মেমোরি অ্যাড্রেস স্টোর করে। সহজ কথায়, পয়েন্টার আমাদের বলে দেয় যে, কোনো ডেটা মেমরির কোন স্থানে আছে, এবং আমরা সেই স্থানে গিয়ে ডেটার সাথে কাজ করতে পারি। @@ -717,7 +717,7 @@ func main() { **বিঃদ্রঃ** এখানে p হল পয়েন্টার এবং \*p দিয়ে আমরা x এর মান অ্যাক্সেস করতে পারি। -### Difference between pass by value vs pass by reference +### ২৭। Difference between pass by value vs pass by reference **Pass by value:** যখন আমরা একটি ফাংশনে কোনো আর্গুমেন্ট পাস বাই ভ্যালু হিসেবে পাঠাই, তখন সেই আর্গুমেন্টের একটি কপি তৈরি হয় এবং ফাংশন সেই কপি নিয়ে কাজ করে। ফাংশনের ভিতরে কপির মান পরিবর্তন হলেও মূল ভেরিয়েবলের মান অপরিবর্তিত থাকে।