Anonymous Functions এবং Closures এর ব্যবহার

Functions in Go (ফাংশনস) - গো প্রোগ্রামিং (Go Programming) - Computer Programming

309

Anonymous Functions এবং Closures এর ব্যবহার


১. Anonymous Functions (অ্যানোনিমাস ফাংশন)

Go প্রোগ্রামিং ভাষায়, Anonymous Functions (অথবা নামহীন ফাংশন) হল এমন ফাংশন যা কোনো নাম ছাড়াই ডিফাইন করা হয়। এটি মূলত তখন ব্যবহৃত হয় যখন আপনি কোনো নির্দিষ্ট ফাংশন কলের মধ্যে একাধিক কোড এক্সিকিউট করতে চান, কিন্তু তার জন্য আলাদা নাম দেওয়ার প্রয়োজন অনুভব করেন না। এই ফাংশনটি সাধারণত একবারের জন্য ব্যবহৃত হয়।

১.১ Anonymous Function উদাহরণ

package main

import "fmt"

func main() {
    // নামহীন ফাংশন তৈরি এবং তা কল করা
    func(a, b int) {
        fmt.Println("Sum:", a+b)
    }(10, 20)
}

এখানে, আমরা একটি নামহীন ফাংশন তৈরি করেছি, যা দুটি আর্গুমেন্ট নেবে এবং তাদের যোগফল প্রিন্ট করবে। এই ফাংশনটি শুধুমাত্র একবার ব্যবহৃত হবে এবং একটি কোড ব্লকের মধ্যে কল করা হবে।

আউটপুট:

Sum: 30

১.২ Anonymous Function এর ব্যবহার

  • একাধিক কলব্যাক ফাংশন সংজ্ঞায়িত করা।
  • যখন আপনি ফাংশনের সাথে সংক্ষিপ্ত কোড ব্যবহার করতে চান।

২. Closures in Go (ক্লোজার)

Closures হল এমন ফাংশন যা নিজের বাহিরে থাকা ভেরিয়েবলগুলিকে সংরক্ষণ এবং ব্যবহার করতে পারে। Go তে একটি ফাংশন যখন অন্য ফাংশনের ভিতর ডিফাইন করা হয়, তখন সেই ফাংশনটি "closer" হয়ে ওঠে এবং বাহিরের ভেরিয়েবলকে রেফারেন্স করতে পারে। এটি ফাংশনের স্কোপ (scope) এর বাইরে থাকা ভেরিয়েবলগুলির উপর অ্যাক্সেস দেয়।

২.১ Closures উদাহরণ

package main

import "fmt"

func main() {
    // একটি outer ফাংশন যা inner ফাংশন রিটার্ন করে
    outer := func() func() int {
        x := 10

        // inner ফাংশনটি x ভেরিয়েবলটি ক্লোজ করে
        return func() int {
            x++
            return x
        }
    }

    // inner ফাংশন কল করা
    closureFunc := outer() // এই স্থানে inner ফাংশন return হচ্ছে
    fmt.Println(closureFunc()) // আউটপুট: 11
    fmt.Println(closureFunc()) // আউটপুট: 12
    fmt.Println(closureFunc()) // আউটপুট: 13
}

এখানে, outer ফাংশনটি একটি inner ফাংশন রিটার্ন করে, যা x ভেরিয়েবলটি ক্লোজ করে এবং প্রতিবার কল করার সময় x এর মান বৃদ্ধি পায়। এর ফলে, closureFunc ফাংশন বার বার কল করেও x এর মান পরিবর্তিত হয়, কারণ এটি তার আউটার স্কোপের ভেরিয়েবলকে সংরক্ষণ করে।

আউটপুট:

11
12
13

২.২ Closures এর ব্যবহার

  • স্টেট ম্যানেজমেন্ট: আপনি যখন কোনো ফাংশনে ডাটা পরিবর্তন করতে চান কিন্তু তা বাহিরের স্কোপে পরিবর্তিত না হয়।
  • ফাংশন রিটার্ন করার সময় কিছু স্টেট বা ভেরিয়েবল ধার্য করে, যাতে ফাংশনটি নিজের ভিতরে সেই ডাটা ব্যবহার করতে পারে।

৩. Anonymous Functions এবং Closures এর ব্যবহারের তুলনা

  • Anonymous Functions: এই ফাংশনগুলির কোনও নাম থাকে না এবং সাধারণত একবারের জন্য ব্যবহৃত হয়। এগুলি ফাংশন ডিফাইন করার সময় সরাসরি কল করা হয়।
  • Closures: একটি ক্লোজার হলো একটি ফাংশন যা এক বা একাধিক ভেরিয়েবল ধারণ করতে পারে যা তার বাইরের স্কোপে থাকা এবং সেগুলি পরিবর্তন করতে পারে।

৩.১ Anonymous Function vs Closure উদাহরণ

package main

import "fmt"

func main() {
    // Anonymous Function
    func() {
        fmt.Println("This is an anonymous function")
    }()

    // Closure
    x := 5
    increment := func() int {
        x++
        return x
    }
    fmt.Println(increment()) // আউটপুট: 6
    fmt.Println(increment()) // আউটপুট: 7
}

এখানে:

  • প্রথমে, একটি নামহীন ফাংশন তৈরি করা হয়েছে যা শুধু একবার কল করা হয়েছে।
  • দ্বিতীয়ত, একটি ক্লোজার তৈরি করা হয়েছে যা x ভেরিয়েবল ব্যবহার করছে, এবং প্রতি কলেই x এর মান বৃদ্ধি পাচ্ছে।

আউটপুট:

This is an anonymous function
6
7

সারসংক্ষেপ

  • Anonymous Functions: নামহীন ফাংশন যেগুলি একবার ব্যবহৃত হয় এবং সাধারণত দ্রুত কোড সংজ্ঞায়িত করতে ব্যবহার করা হয়।
  • Closures: এমন ফাংশন যা নিজের বাইরের স্কোপের ভেরিয়েবলগুলি সংরক্ষণ করতে পারে এবং পরবর্তীতে সেই ভেরিয়েবলগুলির মান পরিবর্তন করতে সক্ষম।

Go তে Anonymous Functions এবং Closures এর ব্যবহার কোডের গঠন এবং পুনঃব্যবহারযোগ্যতা বাড়ায়, এবং এভাবে আপনার প্রোগ্রামের কাঠামোকে আরও শক্তিশালী করে।

Content added By
Promotion

Are you sure to start over?

Loading...