ক্লাস ২৯ - অ্যারে (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ইত্যাদির জন্য0stringএর জন্য""(ফাঁকা স্ট্রিং)boolএর জন্যfalsepointers/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 ]