1 লুপ স্টেটমেন্টের ওভারভিউ

Go ভাষায়, লুপ স্টেটমেন্টগুলি আমাদেরকে কোড ব্লকটি একাধিক বার পালন করার অনুমতি দেয়। যখন আপনার একাধিকবার নির্দিষ্ট অপারেশন পালন করতে হয়, তখন লুপ স্টেটমেন্টগুলি খুব দরকারী হয়। উদাহরণস্বরূপ, আপনি যদি একটি অ্যারেতে প্রতিটি উপাদানে ঘুরে আসতে চান বা নির্দিষ্ট শর্ত পূরণ হতে প্রতিক্রিয়া পুনরাবৃত্তি করতে চান, তবে Go লুপ স্টেটমেন্টগুলি প্রধানত for কীওয়ার্ড ব্যবহার করে নির্মিত হয়, যা Go ভাষার একমাত্র লুপ স্টেটমেন্ট। লুপ স্টেটমেন্ট সঠিকভাবে ব্যবহার করা খুব গুরুত্বপূর্ণ যাতে দক্ষতাময় এবং রক্ষণীয় কোড লেখা যায়।

2 for লুপের মৌলিক

2.1 for লুপের প্রকার

Go ভাষায় for লুপের তিনটি অংশ আছে:

  1. শুরুর কথোপকথন: প্রথম পুনরাবৃত্তির আগে অনুষ্ঠান করা, সাধারণভাবে লুপ গণনা ঘোষণা করার জন্য ব্যবহৃত হয়।
  2. শর্ত অভিব্যক্তি: প্রতিটি পুনরাবৃত্তির আগে মৌলিকভাবে পর্যালোচনা করা হয়। যদি শর্তটি true হয়, তবে লুপের বডি অনুষ্ঠিত হয়।
  3. পোস্ট কথোপকথন: প্রতি পুনরাবৃত্তির কোড ব্লকের পরে অনুষ্ঠিত করা, সাধারণভাবে লুপ গণনা আপডেট করার জন্য ব্যবহৃত হয়।

for লুপের বাক্যপ্রণালি নিম্নরূপ:

for শুরুর কথোপকথন; শর্ত অভিব্যক্তি; পোস্ট কথোপকথন {
    // লুপ বডি কোড
}

2.2 for লুপের সাধারণ উদাহরণ

আসুন একটি সহজ উদাহরণের মাধ্যমে for লুপের অনুষ্ঠান প্রক্রিয়াটি বুঝতে চেষ্টা করি:

package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println("মান i হল:", i)
    }
}

এই উদাহরণে, ভেরিয়েবল i কে 0 দিয়া শুরু করা হয়। for লুপ পরীক্ষা করে যে i < 5 শর্তটি সত্য হয় কিনা। যদি শর্তটি সত্য হয়, তবে লুপের বডি অনুষ্ঠিত হয় এবং i এর মান প্রিন্ট করা হয়। লুপের বডি অনুষ্ঠিত করার পরে, i এর মানটি আপডেট করা হয় i++ (বৃদ্ধি অপারেশন) এবং তারপর লুপটি শর্ত পুনরাবৃত্তি যাচ্ছে যে i এর মান 5 পেয়ে যাবে, যা থেকে শর্তটি মিথ্যা হয় এবং for লুপটি শেষ হয়।

2.3 অন্য ধরণের for লুপ উদাহরণ

2.3.1 অসীম লুপ

Go ভাষায়, আপনি for লুপের শুরু কথোপকথন, শর্ত অভিব্যক্তি এবং পোস্ট কথোপক্থন অপসারন করে একটি অসীম লুপ তৈরি করতে পারেন, যা একটি break স্টেটমেন্ট বা ফাংশনের ফেরত মাধ্যমে বন্ধ হওয়া পর্যন্ত চলবে।

for {
    // অসীম লুপের ভিতরের কোড
    if কিছু শর্ত {
        break // নির্দিষ্ট শর্ত পূরণ হলে লুপের বাহিরে চলে যাওয়া
    }
}

2.3.2 শুধুমাত্র শর্ত সহ for লুপ

Go ভাষায়, আপনি অন্য প্রোগ্রামিং ভাষার while লুপের মতো, কেবল একটি শর্ত সহ for লুপ ব্যবহার করতে পারেন।

n := 0
for n < 5 {
    fmt.Println(n)
    n++
}

উপরের কোডটি 0 থেকে 4 প্রিন্ট করবে, এবং লুপ শেষ হবে যখন n মান 5 পেয়ে যাবে।

2.3.3 অ্যারে বা স্লাইস দ্বারা লুপ করা

Go ভাষায়, অ্যারে বা স্লাইসের প্রতিটি উপাদানের মধ্যে ঘুরে আসার প্রস্তুতিতে range কীওয়ার্ড ব্যবহার করা হয়।

items := []int{1, 2, 3, 4, 5}
for index, value := range items {
    fmt.Printf("ইন্ডেক্স: %d, মান: %d\n", index, value)
}

উপরের কোডটি প্রতিটি উপাদানের ইন্ডেক্স এবং মান প্রিন্ট করবে। আপনি যদি শুধুমাত্র উপাদানের মানগুলির প্রয়োজন হয়, তবে আপনি _ ব্যবহার করে ইন্ডেক্সটি অগ্রাহ্য করতে পারেন।

for _, value := range items {
    fmt.Printf("মান: %d\n", value)
}

মনে রাখা: অ্যারেগুলির ব্যবহারকে বিস্তার করার বিস্তারিত বিবরণ পরবর্তী অধ্যায়ে ব্যাখ্যা করা হবে। আপনি যদি এই অংশটি বুঝতে না পান, তবে সাময়িকভাবে এটি বুঝলেই চলে।

2.3.4 ম্যাপ দিয়ে লুপ চালানো

ম্যাপ এর মধ্যে লুপ চালানোর জন্য for লুপ এবং range এক্সপ্রেশনের সংমিশ্রণ খুব শক্তিশালী। এটি আপনাকে ম্যাপের প্রতিটি কী-মান জেনে নেওয়া দেয়।

colors := map[string]string{"red": "#ff000", "green": "#00ff00", "blue": "#000ff"}
for key, value := range colors {
    fmt.Printf("Key: %s, Value: %s\n", key, value)
}

এই উদাহরণে, আমরা colors ম্যাপে সব কী এবং তাদের সাথে সংশ্লিষ্ট মান প্রিন্ট করছি। স্লাইস লুপ চালানোর মত, যদি আপনি কেবলমাত্র কী অথবা মান প্রয়োজন হয়, তবে অন্যটি অগ্রাহ্য করতে পারেন।

লক্ষ্য: ম্যাপ এর ব্যবহারকে পরবর্তী অধ্যায়ে বিস্তারিত ব্যাখ্যা করা হবে। যদি আপনি এই অংশটি বুঝতে না পারেন, তাহলে এটি অসুবিধা নয়, যতদ্রুত বুঝতে চাইলে এর ব্যবহার সম্পর্কে বোঝা যায়।

3 লুপের প্রবাহ নিয়ন্ত্রণ করা

3.1 break ব্যবহার করে লুপ বন্ধ করা

কিছু সময় নির্দিষ্ট শর্ত পূরণ হলে লুপটি অব্যাহত ছাড়তে হতে পারে, এবং এই ধরণের ক্ষেত্রে break বিবেচনা করা যায়। নিচে break ব্যবহারের একটি উদাহরণ দেওয়া হল:

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            break // i যখন ৫ হলে লুপটি বন্ধ করুন
        }
        fmt.Println("i এর মান হল:", i)
    }
    // আউটপুটে শুধুমাত্র ০ থেকে ৪ এর মান থাকবে
}

3.2 continue ব্যবহার করে পরবর্তী অনুভূতি বৃদ্ধি

নির্দিষ্ট অবস্থায় এক্ষেত্রে, আমরা বর্তমান অনুভূতি অগ্রাহ্য করতে এবং লুপের পরবর্তী অনুভূতিতে যাওয়ার জন্য continue ব্যবহার করতে চাইতে পারি। একটি উদাহরণ দেখা যাক:

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i%2 != 0 {
            continue // i বিজোড় হলে এই অনুভূতিটি দূর করুন
        }
        fmt.Println("জোড় সংখ্যা:", i)
    }
}