Go এর সিনট্যাক্স এবং বেসিক ধারণা (Go Syntax and Basic Concepts)
Go প্রোগ্রামিং ভাষাটি সহজ এবং পরিষ্কার সিনট্যাক্সের জন্য পরিচিত, যা ডেভেলপারদের জন্য কোড লেখা সহজ করে তোলে। Go-তে কাজ করার জন্য কিছু মৌলিক ধারণা এবং সিনট্যাক্স রয়েছে যা আপনাকে শেখা জরুরি। এখানে আমরা Go ভাষার কিছু গুরুত্বপূর্ণ মৌলিক ধারণা এবং সিনট্যাক্স সম্পর্কে আলোচনা করব।
১. Go প্রোগ্রামের কাঠামো (Basic Structure of Go Program)
একটি Go প্রোগ্রাম সাধারণত কিছু মৌলিক অংশ নিয়ে গঠিত থাকে:
- package declaration: প্রোগ্রামটি কোন প্যাকেজের অংশ তা নির্ধারণ করে।
- import statement: অন্যান্য প্যাকেজ বা লাইব্রেরি ব্যবহার করতে এটি ব্যবহার করা হয়।
- function declaration: Go-তে প্রোগ্রাম প্রধানভাবে ফাংশন ভিত্তিক।
উদাহরণ:
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}package main: এটি নির্দেশ করে যে এই প্রোগ্রামটিmainপ্যাকেজের অংশ, যা এক্সিকিউটেবল প্রোগ্রাম তৈরি করার জন্য ব্যবহৃত হয়।import "fmt": এখানেfmtপ্যাকেজটি ব্যবহার করা হয়েছে যা ইনপুট/আউটপুট পরিচালনার জন্য ব্যবহৃত হয়।func main(): এটি একটি ফাংশন ডিক্লারেশন। Go প্রোগ্রামটি এখানে শুরু হয়।
২. ভেরিয়েবল (Variables)
Go-তে ভেরিয়েবল ডিক্লেয়ার করার জন্য var কিওয়ার্ড ব্যবহৃত হয়। ভেরিয়েবলের টাইপ নির্ধারণ করা হয়, এবং প্রাথমিক মান প্রদান করা যায়।
সিনট্যাক্স:
var variableName type = valueউদাহরণ:
var age int = 25
var name string = "Alice"স্বয়ংক্রিয় টাইপ নির্ধারণ:
Go-তে টাইপ স্বয়ংক্রিয়ভাবে নির্ধারণ করতে := অপারেটর ব্যবহার করা হয়।
age := 25
name := "Alice"৩. কনস্ট্যান্ট (Constants)
Go-তে কনস্ট্যান্ট ডিক্লেয়ার করতে const কিওয়ার্ড ব্যবহার করা হয়। কনস্ট্যান্টের মান একবার সেট করার পর পরিবর্তন করা যায় না।
সিনট্যাক্স:
const constantName = valueউদাহরণ:
const Pi = 3.14
const Greeting = "Hello"৪. ফাংশন (Functions)
Go-তে ফাংশন ডিফাইন করার জন্য func কিওয়ার্ড ব্যবহার করা হয়। ফাংশনের মধ্যে কোডের অংশ হিসেবে প্রয়োজনীয় অপারেশন করা হয়।
সিনট্যাক্স:
func functionName(parameter1 type, parameter2 type) returnType {
// function body
}উদাহরণ:
func greet(name string) {
fmt.Println("Hello, " + name)
}ফাংশন ডিক্লেয়ার করার পর আপনি এটি কল করতে পারবেন:
greet("Alice")Go-তে ফাংশন মাল্টিপল রিটার্ন ভ্যালু রিটার্ন করতে সক্ষম:
func add(a int, b int) (int, int) {
return a + b, a - b
}এখানে add ফাংশন দুটি ভ্যালু (সমষ্টি এবং বিয়োগ) রিটার্ন করবে।
৫. কন্ডিশনাল স্টেটমেন্টস (Conditional Statements)
Go-তে কন্ডিশনাল স্টেটমেন্টগুলি ব্যবহার করতে if, else if, এবং else কিওয়ার্ড ব্যবহার করা হয়। এছাড়া, Go-তে একটি নতুন ফিচার রয়েছে যেখানে আপনি if-এর মধ্যে ভেরিয়েবল ডিক্লেয়ার করতে পারেন।
উদাহরণ:
age := 20
if age >= 18 {
fmt.Println("You are an adult.")
} else {
fmt.Println("You are a minor.")
}এখানে, যদি age ১৮ বা তার বেশি হয়, তাহলে "You are an adult." মেসেজটি প্রিন্ট হবে, অন্যথায় "You are a minor."।
৬. লোপস (Loops)
Go-তে শুধুমাত্র একটি লুপ রয়েছে, যা for লুপ। for লুপের মাধ্যমে বিভিন্ন ধরণের লুপিং করা যেতে পারে।
উদাহরণ ১: সাধারণ for লুপ
for i := 0; i < 5; i++ {
fmt.Println(i)
}উদাহরণ ২: ইনফিনিট লুপ
for {
fmt.Println("This will run forever!")
}উদাহরণ ৩: for লুপে range ব্যবহার
fruits := []string{"Apple", "Banana", "Cherry"}
for index, fruit := range fruits {
fmt.Println(index, fruit)
}এখানে range ব্যবহার করে একটি স্লাইসের উপর লুপিং করা হয়েছে এবং প্রতিটি উপাদান ও তার ইনডেক্স প্রিন্ট করা হয়েছে।
৭. আররেতে (Arrays) এবং স্লাইস (Slices)
৭.১ Array
Go-তে একটি অ্যারে একটি নির্দিষ্ট সাইজের সিকোয়েন্স। এটি একে অপরের সাথে একই টাইপের উপাদান ধারণ করে।
উদাহরণ:
var numbers [3]int = [3]int{1, 2, 3}৭.২ Slice
Slice একটি ডাইনামিক অ্যারে, যার সাইজ পরিবর্তন করা যায়। এটি Go-তে আরও জনপ্রিয়।
উদাহরণ:
numbers := []int{1, 2, 3}
numbers = append(numbers, 4)এখানে append ফাংশনের মাধ্যমে স্লাইসের মধ্যে নতুন উপাদান যোগ করা হয়েছে।
৮. প্যাকেজ (Packages)
Go একটি মডুলার ভাষা, যার মাধ্যমে কোডকে প্যাকেজের মধ্যে ভাগ করা যায়। প্যাকেজ ব্যবহারে কোড পুনঃব্যবহারযোগ্যতা এবং স্কেলেবিলিটি বৃদ্ধি পায়।
উদাহরণ:
package main
import "fmt" // Importing fmt package
func main() {
fmt.Println("Hello, Go!")
}এখানে fmt প্যাকেজ ব্যবহার করা হয়েছে যা ইনপুট/আউটপুট পরিচালনা করে।
সারসংক্ষেপ
Go-এর সিনট্যাক্স এবং বেসিক ধারণাগুলি সহজ এবং পরিষ্কার, যা ডেভেলপারদের জন্য দ্রুত শেখা সম্ভব করে তোলে। ভেরিয়েবল, কনস্ট্যান্ট, ফাংশন, কন্ডিশনাল স্টেটমেন্ট, লুপ, অ্যারে এবং স্লাইসের মত মৌলিক ধারণাগুলি Go ভাষায় প্রোগ্রামিংয়ের ভিত্তি তৈরি করে। Go-তে কোড লেখা সহজ, এবং এর পারফরম্যান্স এবং কনকারেন্সি সুবিধা এটিকে আরও শক্তিশালী করে তোলে।
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-তে কোড লেখার সময় সহজ এবং স্বচ্ছ সিনট্যাক্স কোডিং প্রক্রিয়াকে দ্রুত এবং কম জটিল করে তোলে।
স্টেটমেন্ট এবং এক্সপ্রেশন
Go প্রোগ্রামিং ভাষায়, স্টেটমেন্ট এবং এক্সপ্রেশন দুটি গুরুত্বপূর্ণ ধারণা। এগুলি কোড লেখার সময় ব্যবহৃত হয়, তবে তাদের মধ্যে একটি মৌলিক পার্থক্য রয়েছে। চলুন, বিস্তারিতভাবে জানি এদের কী এবং কিভাবে কাজ করে।
১. স্টেটমেন্ট (Statement)
স্টেটমেন্ট একটি একক নির্দেশনা যা প্রোগ্রামের কোন কার্যক্রম সম্পাদন করে। এটি কোনো কাজ বা অ্যাকশন সম্পাদন করতে ব্যবহৃত হয়, যেমন ভেরিয়েবল ঘোষণা, কন্ডিশনাল চেক, লুপ, ফাংশন কল, ইত্যাদি।
স্টেটমেন্ট সাধারণত অপারেশন বা অ্যাকশন ঘটায় এবং প্রোগ্রামের প্রবাহ নিয়ন্ত্রণে সহায়ক হয়।
উদাহরণ:
ভেরিয়েবল ডিক্লেয়ারেশন:
var x intএখানে
var x intএকটি স্টেটমেন্ট, যাxনামক একটি ভেরিয়েবল ঘোষণা করে এবং তার ডেটা টাইপ হিসেবেintনির্ধারণ করে।ইফ স্টেটমেন্ট (Conditional Statement):
if x > 10 { fmt.Println("x is greater than 10") }এখানে
if x > 10 { ... }একটি স্টেটমেন্ট যা একটি শর্ত পরীক্ষা করে এবং শর্ত পূর্ণ হলে কিছু কার্যক্রম সম্পাদন করে।লুপ স্টেটমেন্ট (Loop Statement):
for i := 0; i < 10; i++ { fmt.Println(i) }এখানে
for i := 0; i < 10; i++একটি লুপ স্টেটমেন্ট যা ০ থেকে ৯ পর্যন্ত সংখ্যাগুলি প্রিন্ট করবে।ফাংশন কল স্টেটমেন্ট:
fmt.Println("Hello, World!")এখানে
fmt.Println("Hello, World!")একটি স্টেটমেন্ট যা একটি ফাংশন কল করে এবং আউটপুট প্রদর্শন করে।
২. এক্সপ্রেশন (Expression)
এক্সপ্রেশন এমন একটি কোড অংশ যা একটি মান (value) প্রদান করে। এক্সপ্রেশন কোনো গাণিতিক, লজিক্যাল, বা অন্যান্য প্রকারের অপারেশন সম্পাদন করে এবং একটি ফলস্বরূপ মান তৈরি করে। এক্সপ্রেশনগুলো স্টেটমেন্টের অংশ হতে পারে, তবে তাদের নিজস্বভাবে একটি মান প্রদান করার ক্ষমতা রয়েছে।
উদাহরণ:
গাণিতিক এক্সপ্রেশন:
x := 5 + 3এখানে
5 + 3একটি এক্সপ্রেশন, যা একটি গাণিতিক অপারেশন করে এবং ফলস্বরূপ8মান তৈরি করে।লজিক্যাল এক্সপ্রেশন:
isValid := x > 10 && y < 20এখানে
x > 10 && y < 20একটি এক্সপ্রেশন, যা দুটি শর্ত যাচাই করে এবং লজিক্যাল মান (যেমনtrueবাfalse) প্রদান করে।ফাংশন কল এক্সপ্রেশন:
result := fmt.Sprint("Hello", " ", "World!")এখানে
fmt.Sprint("Hello", " ", "World!")একটি এক্সপ্রেশন যা দুটি স্ট্রিং যুক্ত করে একটি নতুন স্ট্রিং তৈরি করে।অ্যারে ইনডেক্স এক্সপ্রেশন:
arr := []int{1, 2, 3} x := arr[1]এখানে
arr[1]একটি এক্সপ্রেশন, যা অ্যারের দ্বিতীয় উপাদান2প্রদান করে।
৩. স্টেটমেন্ট এবং এক্সপ্রেশন এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | স্টেটমেন্ট | এক্সপ্রেশন |
|---|---|---|
| সংজ্ঞা | একটি একক নির্দেশনা যা একটি কাজ বা অ্যাকশন সম্পাদন করে। | একটি কোড অংশ যা একটি মান প্রদান করে। |
| ফলাফল | কোন মান প্রদান করে না, বরং কার্যক্রম বা অ্যাকশন সম্পাদন করে। | একটি মান (value) প্রদান করে। |
| কোড প্রবাহ নিয়ন্ত্রণ | প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ করে, যেমন লুপ বা কন্ডিশনাল চেক। | অন্য কোন কার্যক্রম বা স্টেটমেন্টের অংশ হিসেবে ব্যবহৃত হতে পারে। |
| উদাহরণ | if, for, var, return, fmt.Println() ইত্যাদি স্টেটমেন্ট। | 5 + 3, x > 10, arr[1], x := y + 10 ইত্যাদি এক্সপ্রেশন। |
৪. স্টেটমেন্ট এবং এক্সপ্রেশন একত্রে ব্যবহার
Go ভাষায়, স্টেটমেন্ট এবং এক্সপ্রেশন একত্রে ব্যবহার করা হয়। উদাহরণস্বরূপ, আপনি একটি এক্সপ্রেশন স্টেটমেন্টের মধ্যে ব্যবহার করতে পারেন।
উদাহরণ:
x := 5 + 3 // এখানে '5 + 3' একটি এক্সপ্রেশন
fmt.Println(x) // এখানে 'fmt.Println' একটি স্টেটমেন্টএখানে 5 + 3 একটি এক্সপ্রেশন যা x কে মান প্রদান করছে, এবং fmt.Println(x) একটি স্টেটমেন্ট যা x এর মান প্রিন্ট করছে।
সারসংক্ষেপ
- স্টেটমেন্ট: এটি একটি নির্দেশনা বা অ্যাকশন যা কোডের প্রবাহ নিয়ন্ত্রণ করে এবং কার্যক্রম সম্পাদন করে।
- এক্সপ্রেশন: এটি একটি কোড অংশ যা একটি মান (value) তৈরি করে এবং অন্য স্টেটমেন্ট বা কার্যক্রমে ব্যবহৃত হয়।
Go প্রোগ্রামিং ভাষায়, এক্সপ্রেশন এবং স্টেটমেন্টের সঠিক ব্যবহার আপনার কোডকে আরও কার্যকরী এবং সমর্থনযোগ্য করে তোলে।
Go-তে Comments, Variables, এবং Constants
১. Comments (কমেন্টস)
Go প্রোগ্রামিং ভাষায় কমেন্টগুলি কোডের মধ্যে টেক্সট যোগ করতে ব্যবহৃত হয়, যাতে কোডের কার্যকারিতা বা উদ্দেশ্য সহজে বুঝতে পারে। কমেন্টগুলি প্রোগ্রামের কার্যক্ষমতায় কোনও প্রভাব ফেলে না এবং কোডকে আরও পাঠযোগ্য এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।
Go তে দুটি ধরনের কমেন্ট রয়েছে:
১.১ সিঙ্গেল-লাইন কমেন্ট (Single-line comment)
এটি এক লাইনে কমেন্ট লেখার জন্য ব্যবহৃত হয়। সিঙ্গেল-লাইন কমেন্টের জন্য // ব্যবহার করতে হয়।
// এটি একটি সিঙ্গেল-লাইন কমেন্ট
fmt.Println("Hello, World!") // এটি একটি ইনলাইন কমেন্ট১.২ মাল্টি-লাইন কমেন্ট (Multi-line comment)
এটি একাধিক লাইনে কমেন্ট লেখার জন্য ব্যবহৃত হয়। মাল্টি-লাইন কমেন্টের জন্য /* দিয়ে শুরু এবং */ দিয়ে শেষ হয়।
/*
এটি একটি মাল্টি-লাইন কমেন্ট।
এখানে আপনি একাধিক লাইন ব্যবহার করতে পারেন।
*/
fmt.Println("Hello, World!")২. Variables (ভেরিয়েবলস)
ভেরিয়েবলগুলি এমন ডেটা ধারণ করার জন্য ব্যবহৃত হয় যা প্রোগ্রামের চলাকালীন পরিবর্তনশীল হতে পারে। Go-তে ভেরিয়েবল ঘোষণা করতে var কীওয়ার্ড ব্যবহার করা হয়। এছাড়াও, Go তে সংক্ষিপ্ত ভেরিয়েবল ডিক্লারেশন (short variable declaration) এর জন্য := ব্যবহার করা হয়।
২.১ ভেরিয়েবল ঘোষণা এবং মান অ্যাসাইন করা
var age int // ভেরিয়েবল age এর ধরন int
age = 25 // ভেরিয়েবল age তে মান দেওয়া
fmt.Println(age)২.২ সংক্ষিপ্ত ভেরিয়েবল ডিক্লারেশন (Short variable declaration)
Go তে যদি আপনি কোনো ভেরিয়েবল ঘোষণা এবং মান একসাথে দিতে চান, তবে := ব্যবহার করতে পারেন।
name := "John Doe" // name ভেরিয়েবলটি একটি string টাইপের হবে এবং "John Doe" মান নিবে
fmt.Println(name)২.৩ একাধিক ভেরিয়েবল ঘোষণা
একই টাইপের একাধিক ভেরিয়েবল একসাথে ঘোষণা করতে পারেন।
var x, y int = 10, 20
fmt.Println(x, y)এছাড়া, ভেরিয়েবলগুলোকে আলাদা টাইপ দিয়ে একসাথে ঘোষণাও করা যেতে পারে।
var name, age = "Alice", 30
fmt.Println(name, age)২.৪ ভেরিয়েবলের ডিফল্ট মান
Go-তে কোনো ভেরিয়েবল যখন ঘোষণা করা হয় এবং তাকে কোনো মান দেওয়া না হয়, তখন সেটি ডিফল্ট মান নেবে। যেমন:
intটাইপের ভেরিয়েবল ডিফল্টে ০ হবে।floatটাইপের ভেরিয়েবল ডিফল্টে ০.০ হবে।stringটাইপের ভেরিয়েবল ডিফল্টে একটি খালি স্ট্রিং""হবে।
var num int
fmt.Println(num) // আউটপুট: 0
var str string
fmt.Println(str) // আউটপুট: ""৩. Constants (কনস্ট্যান্টস)
কনস্ট্যান্ট হল এমন একটি মান যা একবার সেট হওয়ার পরে পরিবর্তন করা যায় না। Go-তে কনস্ট্যান্ট ঘোষণা করতে const কীওয়ার্ড ব্যবহার করা হয়।
৩.১ কনস্ট্যান্ট ঘোষণা
const Pi = 3.14
fmt.Println(Pi)৩.২ কনস্ট্যান্টের ধরন
যেহেতু Go-তে কনস্ট্যান্টের ধরন সাধারণত কম্পাইলারের মাধ্যমে ডিডাক্ট করা হয়, সুতরাং আপনি কনস্ট্যান্টের টাইপ উল্লেখ না করেও শুধু মান দিয়ে কনস্ট্যান্ট ঘোষণা করতে পারেন।
const Name = "Alice"
fmt.Println(Name)তবে আপনি চাইলে কনস্ট্যান্টের ধরনও নির্ধারণ করতে পারেন:
const Age int = 30
fmt.Println(Age)৩.৩ একাধিক কনস্ট্যান্ট ঘোষণা
একই ধরনের একাধিক কনস্ট্যান্ট একসাথে ঘোষণা করা যেতে পারে।
const (
x = 10
y = 20
z = 30
)
fmt.Println(x, y, z)৩.৪ টাইপ কনস্ট্যান্ট
Go-তে কনস্ট্যান্টগুলো টাইপের সাথে সম্পর্কিত হতে পারে। আপনি চাইলে টাইপ নির্ধারণ করে কনস্ট্যান্ট তৈরি করতে পারেন:
const (
SpeedLimit int = 60
MaxHeight float64 = 100.5
)
fmt.Println(SpeedLimit, MaxHeight)৩.৫ ইন্টারনাল কনস্ট্যান্ট
Go ভাষার মধ্যে iota ব্যবহার করে কিছু কনস্ট্যান্টের মান অটোমেটিকভাবে ইন্টারনালি বৃদ্ধি করা যায়।
const (
A = iota
B
C
)
fmt.Println(A, B, C) // আউটপুট: 0 1 2এখানে iota দ্বারা কনস্ট্যান্টগুলির মান স্বয়ংক্রিয়ভাবে ০ থেকে শুরু হয়ে বাড়ে।
সারসংক্ষেপ
- Comments: Go-তে সিঙ্গেল-লাইন এবং মাল্টি-লাইন কমেন্ট ব্যবহৃত হয়। কমেন্টগুলো কোডের ব্যাখ্যা ও তথ্য সংরক্ষণে সহায়তা করে।
- Variables: Go-তে ভেরিয়েবল ঘোষণা এবং মান দেওয়ার জন্য
varএবং সংক্ষিপ্ত ডিক্লারেশন:=ব্যবহার করা হয়। - Constants: কনস্ট্যান্টস হলো এমন মান যা একবার সেট হওয়ার পর পরিবর্তন করা যায় না। কনস্ট্যান্ট ডিক্লারেশন
constদিয়ে করা হয়।
এগুলো Go ভাষার অন্যতম গুরুত্বপূর্ণ বৈশিষ্ট্য, যা আপনাকে একটি কার্যকর এবং দক্ষ প্রোগ্রাম লেখার জন্য সহায়ক হবে।
Functions এবং Packages এর ব্যবহার
১. Functions in Go (ফাংশনস)
Go প্রোগ্রামিং ভাষায়, ফাংশন (Functions) হল কোডের পুনঃব্যবহারযোগ্য ব্লক, যা নির্দিষ্ট কাজ সম্পাদন করে। ফাংশন ব্যবহার করে আপনি কোডকে আরও সংগঠিত, পরিষ্কার এবং পুনঃব্যবহারযোগ্য করতে পারেন।
১.১ ফাংশন ডিফাইনেশন
Go ভাষায় একটি ফাংশন ডিফাইন করার সাধারণ সিনট্যাক্স:
func functionName(parameters) returnType {
// function body
}func: এটি ফাংশন ডেফিনিশন শুরু করার জন্য ব্যবহৃত কীওয়ার্ড।functionName: ফাংশনের নাম।parameters: ফাংশনে যেসব ইনপুট দেওয়া হবে তা হলো প্যারামিটার। (অপশনাল)returnType: ফাংশনটির আউটপুট টাইপ। (অপশনাল)
১.২ ফাংশন উদাহরণ
package main
import "fmt"
// ফাংশন ডিফাইন করা
func add(a int, b int) int {
return a + b
}
func main() {
result := add(10, 20) // ফাংশন কল করা
fmt.Println("Sum:", result)
}এখানে add একটি ফাংশন যা দুটি সংখ্যার যোগফল ফেরত দেয়। এটি int টাইপের আর্গুমেন্ট নেয় এবং int টাইপের রিটার্ন ভ্যালু প্রদান করে।
১.৩ ফাংশন রিটার্ন টাইপ
ফাংশন কখনও কখনও একাধিক মান ফেরত দিতে পারে। এর জন্য একটি বিশেষ সিনট্যাক্স রয়েছে:
func swap(a, b string) (string, string) {
return b, a
}এখানে swap ফাংশন দুটি মান (string টাইপ) ফিরিয়ে দেয়। যখন ফাংশনটির একাধিক রিটার্ন ভ্যালু থাকে, তখন তা একে একে ফেরত দেওয়া হয়।
১.৪ নামহীন ফাংশন (Anonymous Functions)
Go তে আপনি নামহীন ফাংশনও তৈরি করতে পারেন, যেগুলো সাধারণত একবারের জন্য ব্যবহৃত হয়।
package main
import "fmt"
func main() {
// নামহীন ফাংশন
func(a, b int) {
fmt.Println("Sum:", a+b)
}(10, 20)
}এখানে, আমরা একটি নামহীন (অ্যানোনিমাস) ফাংশন ব্যবহার করেছি, যা 10 এবং 20 যোগফল প্রিন্ট করে।
২. Packages in Go (প্যাকেজেস)
Go তে প্যাকেজ (Package) হচ্ছে কোডের সংগঠিত এবং পুনঃব্যবহারযোগ্য অংশ। প্যাকেজের মাধ্যমে বিভিন্ন কোডের ফাংশন, স্ট্রাকচার, ইন্টারফেস এবং ভেরিয়েবল একত্রিত করা হয়।
২.১ প্যাকেজ ডিফাইনেশন
Go-তে প্যাকেজ ডিফাইন করতে, প্রথমে একটি ফোল্ডারে কোড ফাইল রাখা হয়, যেখানে ফাইলের প্রথম লাইনে package কীওয়ার্ড দিয়ে প্যাকেজের নাম উল্লেখ করা হয়।
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}এখানে main একটি প্যাকেজ। যখন main প্যাকেজে কোড থাকে, তখন এই প্যাকেজটি Go প্রোগ্রাম চালানোর মূল এন্ট্রি পয়েন্ট হয়।
২.২ প্যাকেজ ইমপোর্ট করা
প্যাকেজ ব্যবহার করতে হলে প্রথমে তার ইমপোর্ট করতে হয়। Go ভাষায়, বাইরের প্যাকেজ বা লাইব্রেরি ইমপোর্ট করার জন্য import কমান্ড ব্যবহার করা হয়।
package main
import "fmt"
func main() {
fmt.Println("Hello from the fmt package")
}এখানে fmt একটি বিল্ট-ইন প্যাকেজ যা ইনপুট/আউটপুট সম্পর্কিত ফাংশন সরবরাহ করে।
২.৩ নিজস্ব প্যাকেজ তৈরি করা
আপনি আপনার নিজের প্যাকেজ তৈরি করতে পারেন। উদাহরণস্বরূপ, একটি নতুন প্যাকেজ greetings তৈরি করা।
- প্রথমে একটি নতুন ফোল্ডার তৈরি করুন, যেমন
greetingsনামে একটি ফোল্ডার। - এর মধ্যে একটি Go ফাইল তৈরি করুন, যেমন
greetings.go:
package greetings
import "fmt"
func SayHello(name string) {
fmt.Println("Hello, " + name)
}- এখন, এই প্যাকেজটি অন্য একটি Go ফাইলে ইমপোর্ট করুন:
package main
import "greetings"
func main() {
greetings.SayHello("Alice")
}এখানে, SayHello ফাংশনটি greetings প্যাকেজ থেকে ইমপোর্ট করা হয়েছে এবং Alice নামের আর্গুমেন্ট পাঠানো হয়েছে।
২.৪ বিল্ডিং প্যাকেজ এবং ইনস্টলেশন
Go-এর প্যাকেজ ব্যবস্থাপনা সাধারণত go install এবং go build কমান্ডের মাধ্যমে পরিচালিত হয়। এটি প্যাকেজগুলির ডিপেনডেন্সি এবং বিল্ডিং সঠিকভাবে নিশ্চিত করে।
৩. Functions এবং Packages এর মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা
Go তে ফাংশন এবং প্যাকেজ ব্যবহারের মাধ্যমে কোড আরও পুনঃব্যবহারযোগ্য এবং সহজে ম্যানেজ করা সম্ভব। প্যাকেজের মাধ্যমে কোডের বিভিন্ন অংশকে আলাদা করে রাখা যায় এবং বিভিন্ন প্রোজেক্টে পুনরায় ব্যবহৃত হতে পারে। ফাংশনগুলি কোডের নির্দিষ্ট কাজ সম্পাদন করতে সক্ষম, যা অন্যান্য কোড ব্লকগুলো থেকে আলাদা হয়ে থাকে। এটি কোডের পাঠযোগ্যতা এবং সহজবোধ্যতা বাড়ায়।
সারসংক্ষেপ
- Functions: Go-তে ফাংশন হলো কোডের পুনঃব্যবহারযোগ্য ব্লক যা নির্দিষ্ট কাজ সম্পাদন করে। আপনি ফাংশন ব্যবহার করে কোডের পুনঃব্যবহারযোগ্যতা এবং কার্যকারিতা বৃদ্ধি করতে পারেন।
- Packages: Go-তে প্যাকেজ হলো কোডের সংগঠিত অংশ, যেখানে একাধিক ফাংশন এবং স্ট্রাকচার রাখা হয়। প্যাকেজ ব্যবহার করে কোডের অংশগুলোকে আলাদা করে রাখা হয়, এবং অন্যান্য প্যাকেজের সাথে সহজে ইন্টারঅ্যাক্ট করা যায়।
Go তে ফাংশন এবং প্যাকেজ ব্যবহারের মাধ্যমে কোডের উন্নত স্থায়ীত্ব, পড়ার সহজতা এবং পুনঃব্যবহারযোগ্যতা নিশ্চিত করা যায়।
Read more