Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ক্লাস ২৯ - অ্যারে (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}

মেমোরি লেআউট

AddressValueMeaning
0x10003arr[0]
0x10046arr[1]

নোট: আসল এড্রেস এখানে কল্পনা করা হয়েছে। মূল ধারণা হলো, অ্যারের সব উপাদান মেমোরিতে একসাথে (contiguously) সংরক্ষিত থাকে।

আরেকটি উদাহরণ:

arr2 := [3]string{"I", "love", "you"}
IndexValue
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 ]