ক্লাস ২৯ - অ্যারে (Array) এবং মেমোরি লেআউট
📅 Date: April 24, 2025
🔑 মূল বিষয়বস্তু
✅ অ্যারে (Array) কী?
- অ্যারে হলো এক ধরনের ডেটা স্ট্রাকচার, যেখানে নির্দিষ্ট সাইজের একই টাইপের একাধিক উপাদান (Element) থাকে।
Go
তে, অ্যারে হলো value type, যার মানে হলো, ফাংশনে পাস করলে এর কপি তৈরি হয়।
🧠 Go তে অ্যারে
var arr [2]int // ২ টি ইন্টিজারের একটি ডিক্লেয়ার করে যার ডিফল্ট ভ্যালু: [0, 0]
arr[0] = 3 // ইনডেক্স ব্যবহার করে ভ্যালু এসাইন করে
arr[1] = 6
// সংক্ষেপে ভ্যালুসহ অ্যারে ডিক্লেয়ার করা
arr := [2]int{3, 6}
💡 ইনডেক্সিং
- Go অ্যারে জিরো-ইনডেক্সড, অর্থাৎ প্রথম উপাদান array[0] দিয়ে অ্যাক্সেস করা হয়।
⚙️ ডিফল্ট মান (Default Value)
ডিফল্ট মান মানে হলো কোনো ভেরিয়েবল বা ডেটা টাইপকে শুরুতে কোনো মান না দিলে, প্রোগ্রামিং ভাষা নিজে থেকে যে মান সেট করে।
- যদি অ্যারে ডিক্লেয়ার করা হয় কিন্তু ইনিশিয়ালাইজ না করা হয়, Go কিছু ডিফল্ট ভ্যালু সেট করে:
int
,float
ইত্যাদির জন্য0
string
এর জন্য""
(ফাঁকা স্ট্রিং)bool
এর জন্যfalse
pointers/interfaces
এর জন্যnil
🔍 মেমোরি লেআউট ভিজ্যুয়ালাইজেশন
উদাহরণ:
arr := [2]int{3, 6}
মেমোরি লেআউট
Address | Value | Meaning |
---|---|---|
0x1000 | 3 | arr[0] |
0x1004 | 6 | arr[1] |
নোট: আসল এড্রেস এখানে কল্পনা করা হয়েছে। মূল ধারণা হলো, অ্যারের সব উপাদান মেমোরিতে একসাথে (contiguously) সংরক্ষিত থাকে।
আরেকটি উদাহরণ:
arr2 := [3]string{"I", "love", "you"}
Index | Value |
---|---|
0 | "I" |
1 | "love" |
2 | "you" |
arr2[1]
এক্সেস করলে "love"
রিটার্ন করে।
🧪 ক্লাসের কোড উদাহরণসহ
package main
import "fmt"
var arr2 = [3]string{"I", "love", "you"}
func main() {
arr := [2]int{3,6}
fmt.Println(arr)
fmt.Println(arr2)
fmt.Println(arr2[1])
}
📦 সারাংশ
- অ্যারে নির্দিষ্ট সাইজের ডেটা সংরক্ষণে ভালো।
- ডিফল্ট মান সম্পর্কে সচেতন থাকুন।
- মেমোরিতে একসাথে (contiguously) সংরক্ষিত থাকে।
- Go তে অ্যারের সাথে কাজ করা সহজ, যা স্লাইসে যাওয়ার আগে ভালো ভিত্তি তৈরি করে।
[Author: @ifrunruhin12, @nazma98 Date: 2025-05-01 - 2025-05-17 Category: interview-qa/class-wise ]