Go এর সিনট্যাক্স এবং কোড স্ট্রাকচার
Go একটি সাধারণ এবং পরিষ্কার সিনট্যাক্স প্রদান করে, যা কোড লেখাকে সহজ এবং দ্রুত করে তোলে। Go-এর সিনট্যাক্স C ভাষার থেকে কিছুটা অনুরূপ হলেও, এর অনেক সুবিধা এবং পার্থক্য রয়েছে যা কোডিংকে আরও সহজ করে।
নিচে Go-এর সিনট্যাক্স এবং কোড স্ট্রাকচার সম্পর্কিত বিস্তারিত আলোচনা করা হলো:
১. Go সিনট্যাক্সের মূল উপাদান
১.১ প্যাকেজ ডেক্লারেশন (Package Declaration)
প্রত্যেকটি Go প্রোগ্রাম একটি package দিয়ে শুরু হয়। এটি প্রোগ্রামের বা ফাইলটির কোন প্যাকেজে অন্তর্ভুক্ত তা নির্ধারণ করে। সাধারণত, একটি Go প্রোগ্রাম main প্যাকেজ দিয়ে শুরু হয়, যা একটি এক্সিকিউটেবল প্রোগ্রাম তৈরি করে।
package main১.২ ইম্পোর্ট (Import)
Go প্রোগ্রামে বাইরের প্যাকেজ ব্যবহার করার জন্য import ব্যবহার করা হয়। এক বা একাধিক প্যাকেজ একত্রে ইম্পোর্ট করা যায়।
import "fmt"এখানে, fmt প্যাকেজটি ইম্পোর্ট করা হয়েছে, যা ফর্ম্যাটেড আউটপুটের জন্য ব্যবহৃত হয়।
১.৩ ফাংশন ডিফিনিশন (Function Definition)
Go-তে ফাংশন ডিফাইন করতে func কীওয়ার্ড ব্যবহার করা হয়। একটি ফাংশনের নাম, আর্গুমেন্ট এবং রিটার্ন টাইপ (যদি থাকে) উল্লেখ করতে হয়।
func main() {
fmt.Println("Hello, Go!")
}এখানে main একটি ফাংশন, যা Go প্রোগ্রামের এক্সিকিউটেবল পয়েন্ট।
১.৪ ভেরিয়েবল ডিক্লেয়ারেশন (Variable Declaration)
Go-তে ভেরিয়েবল ডিক্লেয়ার করতে var কীওয়ার্ড ব্যবহার করা হয়। আপনি টাইপ উল্লেখ করতে পারেন, অথবা টাইপ ইনফারেন্স (type inference) ব্যবহার করে স্বয়ংক্রিয়ভাবে টাইপ নির্ধারণ করতে পারেন।
var message string = "Hello, Go!"বা, টাইপ ইনফারেন্স ব্যবহার করলে:
message := "Hello, Go!"এখানে, Go স্বয়ংক্রিয়ভাবে message এর টাইপ string নির্ধারণ করবে।
১.৫ কন্ডিশনাল স্টেটমেন্টস (Conditional Statements)
Go তে সাধারণ কন্ডিশনাল স্টেটমেন্ট if, else ব্যবহার করা হয়। Go-তে if স্টেটমেন্টে পারেন্টেসিস ব্যবহার করা প্রয়োজন নয় (যেমন C বা Java তে প্রয়োজন হয়), তবে কোড ব্লক {} ব্যবহার করা হয়।
if x > 10 {
fmt.Println("x is greater than 10")
} else {
fmt.Println("x is less than or equal to 10")
}১.৬ লুপ (Loop)
Go-তে একমাত্র লুপ হল for লুপ। Go তে while বা do-while লুপ নেই। তবে for লুপের মাধ্যমেই সেই সমস্ত কার্যকলাপ করা যায় যা অন্য ভাষায় while বা do-while লুপের মাধ্যমে করা হয়।
for i := 0; i < 5; i++ {
fmt.Println(i)
}এটি ০ থেকে ৪ পর্যন্ত সংখ্যা প্রিন্ট করবে।
১.৭ অ্যারেইস এবং স্লাইস (Arrays and Slices)
Go-তে অ্যারে এবং স্লাইস খুবই গুরুত্বপূর্ণ ডাটা স্ট্রাকচার। অ্যারে হল ফিক্সড সাইজের ডাটা স্ট্রাকচার, এবং স্লাইস হল ডাইনামিক সাইজের ডাটা স্ট্রাকচার যা অ্যারের উপর ভিত্তি করে তৈরি হয়।
var arr [3]int = [3]int{1, 2, 3} // অ্যারেস্লাইসের উদাহরণ:
var slice = []int{1, 2, 3, 4, 5} // স্লাইস১.৮ স্ট্রাকচার (Structures)
Go-তে ডাটা সংগঠিত করতে স্ট্রাকচার ব্যবহার করা হয়। স্ট্রাকচার হল কাস্টম ডাটা টাইপ যা একাধিক ফিল্ড ধারণ করতে পারে।
type Person struct {
Name string
Age int
}এখানে Person নামক একটি স্ট্রাকচার তৈরি করা হয়েছে, যার মধ্যে Name এবং Age নামক দুটি ফিল্ড রয়েছে।
১.৯ পানিক এবং রেকাভারি (Panic and Recovery)
Go তে panic এবং recover ব্যবহৃত হয়। panic ব্যবহার করা হয় যদি কোনো অনাকাঙ্ক্ষিত সমস্যা হয় এবং প্রোগ্রাম বন্ধ করতে হয়, আর recover ব্যবহার করা হয় সেই প্যানিক থেকে পুনরুদ্ধারের জন্য।
func safeDivide(a, b int) int {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
if b == 0 {
panic("division by zero")
}
return a / b
}২. Go কোড স্ট্রাকচার
Go প্রোগ্রামের সাধারণ স্ট্রাকচার নিম্নরূপ:
- Package Declaration: প্রোগ্রামের প্যাকেজ ডিক্লেয়ারেশন। সাধারণত
mainপ্যাকেজ থাকে। - Imports: বাইরের প্যাকেজ ইম্পোর্ট করা হয়।
- Function Definitions: Go কোড ফাংশন হিসেবে ডিফাইন করা হয়। প্রধান ফাংশন সাধারণত
mainহয়। - Variables and Constants: প্রোগ্রামে ভেরিয়েবল এবং কনস্ট্যান্ট ব্যবহার করা হয়।
- Control Flow Statements:
if,for,switchইত্যাদি কন্ট্রোল স্টেটমেন্ট ব্যবহার করা হয়। - Structs and Methods: স্ট্রাকচার এবং তাদের সাথে সংযুক্ত মেথড তৈরি করা হয়।
উদাহরণ:
package main
import "fmt"
// Struct definition
type Person struct {
Name string
Age int
}
// Main function
func main() {
p := Person{"Alice", 30} // Struct instance
fmt.Println(p) // Printing struct instance
if p.Age > 18 {
fmt.Println("Adult")
} else {
fmt.Println("Minor")
}
// Loop example
for i := 1; i <= 3; i++ {
fmt.Println("Iteration", i)
}
}সারসংক্ষেপ
Go প্রোগ্রামিং ভাষার সিনট্যাক্স এবং কোড স্ট্রাকচার খুবই পরিষ্কার এবং সহজ। এটি C-এর মতো ভাষার সাথে তুলনা করা হলেও Go-এর কোডিং প্রক্রিয়া অনেক সরল এবং কাঠামোবদ্ধ। এর স্ট্রাকচার, ফাংশন, কন্ডিশনাল স্টেটমেন্ট, লুপ, এবং প্যাকেজ ব্যবস্থাপনা উন্নত ডেভেলপমেন্টের জন্য আদর্শ। Go-তে কোড লেখার সময় সহজ এবং স্বচ্ছ সিনট্যাক্স কোডিং প্রক্রিয়াকে দ্রুত এবং কম জটিল করে তোলে।
Read more