Functions এর ডিক্লারেশন এবং ব্যবহার (Functions Declaration and Usage)
Go প্রোগ্রামিং ভাষায় ফাংশন হল কোডের পুনঃব্যবহারযোগ্য ব্লক, যা নির্দিষ্ট কাজ বা কার্য সম্পাদন করে। ফাংশন ব্যবহারের মাধ্যমে কোডকে আরো সংগঠিত এবং পরিচালনাযোগ্য করা যায়। Go তে ফাংশন ডিক্লেয়ারেশন এবং ব্যবহার অনেক সহজ এবং পরিষ্কার। নিচে Go তে ফাংশন ডিক্লেয়ারেশন এবং তার ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. ফাংশন ডিক্লারেশন (Function Declaration)
Go-তে ফাংশন ডিক্লেয়ার করতে func কীওয়ার্ড ব্যবহার করা হয়। একটি ফাংশন দুটি প্রধান অংশ নিয়ে তৈরি হয়:
- ফাংশন নাম
- ফাংশনের প্যারামিটার এবং রিটার্ন টাইপ (যদি থাকে)
সাধারণ সিনট্যাক্স:
func functionName(parameter1 type, parameter2 type) returnType {
// কোড
}functionName: ফাংশনের নাম, যা ফাংশনকে পরিচিতি দেয়।parameter1,parameter2: ফাংশনের প্যারামিটার (অথবা আর্গুমেন্ট), যা ফাংশনে ডাটা পাস করতে ব্যবহৃত হয়।type: প্যারামিটারটির ডেটা টাইপ।returnType: ফাংশনের রিটার্ন টাইপ (যদি থাকে), অর্থাৎ ফাংশনটি কোন ধরনের মান রিটার্ন করবে।
উদাহরণ ১: সাধারণ ফাংশন
package main
import "fmt"
// একটি ফাংশন যা দুটি পূর্ণসংখ্যা গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে
func add(a int, b int) int {
return a + b
}
func main() {
result := add(3, 4)
fmt.Println("Sum:", result)
}আউটপুট:
Sum: 7এখানে, add ফাংশন দুটি int প্যারামিটার নেয় এবং একটি int রিটার্ন করে, যা দুটি প্যারামিটার যোগ করে রিটার্ন করে।
২. ফাংশন রিটার্ন টাইপ (Function Return Type)
ফাংশন ডিক্লেয়ার করার সময় আপনি এটি নির্ধারণ করতে পারেন যে ফাংশনটি কোন ধরনের মান রিটার্ন করবে। ফাংশনটি যদি কোনো মান রিটার্ন না করে, তবে তার রিটার্ন টাইপ void বা একে ফাঁকা রেখেও দেওয়া যায় (Go-তে void টাইপ নেই, তাই শুধু ফাঁকা রাখা হয়)।
উদাহরণ ২: কোন মান রিটার্ন না করা ফাংশন
package main
import "fmt"
// একটি ফাংশন যা কোন মান রিটার্ন করে না
func greet(name string) {
fmt.Println("Hello, " + name)
}
func main() {
greet("Go Programmer")
}আউটপুট:
Hello, Go Programmerএখানে greet ফাংশনটি name প্যারামিটার গ্রহণ করে, কিন্তু কোনো মান রিটার্ন করে না। এটি শুধুমাত্র আউটপুট প্রদর্শন করে।
৩. একাধিক রিটার্ন ভ্যালু (Multiple Return Values)
Go তে একটি ফাংশন একাধিক মানও রিটার্ন করতে পারে। এটি মূলত তখন ব্যবহৃত হয় যখন একাধিক রিটার্ন ভ্যালু প্রয়োজন হয়, যেমন: একটি ফাংশন থেকে ফলাফল এবং একটি ত্রুটি (error) রিটার্ন করা।
উদাহরণ ৩: একাধিক রিটার্ন ভ্যালু
package main
import "fmt"
// একটি ফাংশন যা দুটি মান রিটার্ন করে
func divide(a, b int) (int, string) {
if b == 0 {
return 0, "Cannot divide by zero"
}
return a / b, ""
}
func main() {
result, err := divide(10, 2)
if err != "" {
fmt.Println(err)
} else {
fmt.Println("Result:", result)
}
result, err = divide(10, 0)
if err != "" {
fmt.Println(err)
} else {
fmt.Println("Result:", result)
}
}আউটপুট:
Result: 5
Cannot divide by zeroএখানে, divide ফাংশনটি দুটি মান রিটার্ন করে:
- ভাগফল (যেটি
intটাইপ)। - একটি ত্রুটি বার্তা (যেটি
stringটাইপ), যদি ভাগ করার সময় শূন্য দ্বারা ভাগ করা হয়।
৪. ফাংশনে ডিফল্ট প্যারামিটার (Default Parameters in Functions)
Go তে ডিফল্ট প্যারামিটার নেই, কিন্তু আপনি মান প্রদান না করলে প্যারামিটার গুলি 0 বা ফাঁকা অবস্থায় থাকবে, যা আপনি কোডে সহজেই পরিচালনা করতে পারেন।
উদাহরণ ৪: ডিফল্ট প্যারামিটার ইফেক্ট
package main
import "fmt"
// একটি ফাংশন যা নাম এবং বয়স গ্রহণ করে
func greet(name string, age int) {
if age == 0 {
age = 25 // ডিফল্ট বয়স ২৫ বছর
}
fmt.Println("Hello, " + name + ". You are " + fmt.Sprint(age) + " years old.")
}
func main() {
greet("John", 30) // বয়স পাস করা হয়েছে
greet("Alice", 0) // বয়স পাস করা হয়নি
}আউটপুট:
Hello, John. You are 30 years old.
Hello, Alice. You are 25 years old.এখানে, greet ফাংশনটি বয়স প্যারামিটার হিসাবে 0 পেলে ডিফল্ট বয়স ২৫ প্রদান করেছে।
৫. ফাংশন টাইপ অ্যালিয়াস (Function Type Alias)
Go তে ফাংশন টাইপ অ্যালিয়াস ব্যবহার করা যায়, যা ফাংশনের সিগনেচার (signature) একটি টাইপ হিসাবে ডিফাইন করে।
উদাহরণ ৫: ফাংশন টাইপ অ্যালিয়াস
package main
import "fmt"
// একটি ফাংশন টাইপ অ্যালিয়াস
type mathOperation func(int, int) int
func add(a, b int) int {
return a + b
}
func subtract(a, b int) int {
return a - b
}
func main() {
var op mathOperation
op = add
fmt.Println("Addition:", op(10, 5))
op = subtract
fmt.Println("Subtraction:", op(10, 5))
}আউটপুট:
Addition: 15
Subtraction: 5এখানে mathOperation ফাংশন টাইপ অ্যালিয়াস ব্যবহার করা হয়েছে, যা দুটি int আর্গুমেন্ট এবং একটি int রিটার্ন টাইপ ধারণ করে।
সারসংক্ষেপ
- ফাংশন ডিক্লেয়ারেশন: Go-তে ফাংশন
funcকীওয়ার্ড দিয়ে ডিক্লেয়ার করা হয়। এটি প্যারামিটার এবং রিটার্ন টাইপ নিতে পারে। - একাধিক রিটার্ন ভ্যালু: Go ফাংশন একাধিক মান রিটার্ন করতে সক্ষম।
- ফাংশনের ডিফল্ট প্যারামিটার: Go তে সরাসরি ডিফল্ট প্যারামিটার নেই, তবে আপনি 0 বা ফাঁকা মান সেট করতে পারেন।
- ফাংশন টাইপ অ্যালিয়াস: Go তে ফাংশন টাইপ অ্যালিয়াস ব্যবহার করে ফাংশন সিগনেচারের ভিত্তিতে টাইপ তৈরি করা যায়।
ফাংশন ব্যবহারের মাধ্যমে আপনি কোডের পুনঃব্যবহারযোগ্যতা এবং সংগঠন বাড়াতে পারবেন, যা কোডের জটিলতা কমিয়ে দেয়।
Read more