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

🧱 Class 14: What is Scope

Scope বলতে code এর part বুঝায় যেখানে একটি নির্দিষ্ট variable কে access করা যাবে।

📘 ক্লাসে ব্যবহৃত কোড

package main

import "fmt"

var (
	a = 20
	b = 30
)

func add(x int, y int) {
	z := x + y
	fmt.Println(z)
}

func main() {
	p := 30
	q := 40

	add(p, q)

	add(a, b)

	add(a, p)

	add(b, z) // ❌ error!
}

✨ Code Explain

var (
	a = 20
	b = 30
)

🔸 RAM এ একটা জায়গায় এ variable গুলো রাখা হয় যেটাকে global memory বলা হয়।

🔸 a এবং b এই দুইটা RAM এর global scope এ declare করা হয়েছে।

🔸 যেকোন ফাংশনের ভেতর থেকে এগুলোকে ব্যবহার করা যাবে।

🧠 যেসব ভ্যারিয়েবল main() বা অন্য কোনো ফাংশনের বাইরে delare করা হয় - সেগুলো global.

👉 main() এবং add() function ও RAM এর global scope এ থাকে (বুঝার সুবিধার্থে)।

💡 শুরুতে RAM এ যা থাকে

				    RAM
+------------------------------------------+
| 20 | 30 | ---- |---- |   |   |   |   |   |
+------------------------------------------+
   a    b   add()  main()

				 global

Go প্রোগ্রামে main() ফাংশন না থাকলে, প্রোগ্রাম চলবে না। main() হচ্ছে execution শুরু করার জায়গা; ওটা ছাড়া Go বুঝতে পারে না কোথা থেকে শুরু করবে।

main() Execution


func main() {
	p := 30
	q := 40

	add(p, q)

	add(a, b)

	add(a, p)

	add(b, z)
}

🔸RAM এ main() এর জন্য আলাদা জায়গা দখল করে

🔸p ও q হলো main() এর local variable

🔸এগুলো main() এর বাইরে থেকে ব্যবহার করা যাবে না

				    RAM
+------------------------------------------+
| 30 | 40 |  |  |  |  |  |  |  |  |  |  |  |
+------------------------------------------+
  p    q

  				main()
  • main()add() function না থাকায় add() কে global এ খুঁজে

add() Execution

func add(x int, y int) {
	z := x + y
	fmt.Println(z)
}

🔸 RAM এ add() এর জন্য আলাদা জায়গা নেয়

🔸 x, y & z হল add() এর local variable

🔸 x এবং y হল add() function এর parameter

🔸add() function শেষ হলে RAM থেকে এদের মুছে ফেলা হয়।

				    RAM
+------------------------------------------+
| 30 | 40 | 70 |  |  |  |  |  |  |  |  |  |
+------------------------------------------+
  x    y    z

  				add()

❌ যদি স্কোপ ভুলে যাও

func add(x int, y int) {
	z := x + q
	fmt.Println(z)
}

🔸q variable add() এর local scope এ নেই

🔸q -> main() এর local variable হওয়ায় global scope এ পাওয়া যাবে না

Scope এর বাইরের variable use করলে undefined compilation error দিবে।

Output:

# command-line-arguments
./main.go:11:11: undefined: q

🧠 Scope Rule

কোথায় declare হয়েছেকোথা থেকে accessible
ফাংশনের বাইরে (global)সব ফাংশন থেকে access করা যায় ✅
ফাংশনের ভিতরে (local)শুধু সেই ফাংশনের ভিতরেই accessible ✅
অন্য ফাংশনের ভিতরবাইরে থেকে access করা যায় না ❌

[Author : @nazma98 Date: 2025-06-13 Category: interview-qa/class-wise ]