মূল কন্টেন্টে যান
মডিউল 2 · 2-এর পাঠ 5কোর্সে 7/50~10 min
মডিউল পাঠ (2/5)

জন্য: একমাত্র লুপ

Go এর একটি লুপ গঠন আছে: for। না while, না do-while, না foreach (যা এর সাথে পরবর্তী পাঠে আসে range)। একটি একক কীওয়ার্ড তিনটি ফর্মের জন্য ধন্যবাদ সমস্ত ক্ষেত্রে কভার করে।

for এর তিনটি রূপ

ক্লাসিক থ্রি-ক্লজ ফর্ম

C/Java এর সাথে অভিন্ন:

Go
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

i এর সুযোগ for এর মধ্যে সীমাবদ্ধ। তিনটি ধারা ঐচ্ছিক (আপনি করতে পারেন যেকোন একটি বাদ দিন) কিন্তু ; থেকে যাবে যদি আপনি একটি মধ্যবর্তী বাদ দেন।

"যখন" ফর্ম: শুধুমাত্র শর্ত

গো-তে, শুধুমাত্র একটি for একটি একক bool অভিব্যক্তি সহ:

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

অসীম রূপ

ধারা ছাড়া, লুপ কখনই শেষ হয় না (যদি না break/return):

Go
for {
    if exitCondition() {
        break
    }
    doWork()
}

এটি ইভেন্ট হ্যান্ডলিং লুপ, সার্ভার, পুনরায় চেষ্টা করার নীতিগুলির প্যাটার্ন।

break, continue এবং লেবেল

break ভেতরের লুপ থেকে প্রস্থান করে, continue পরবর্তী পুনরাবৃত্তিতে চলে যায়:

Go
for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue       // salta i pari
    }
    if i > 7 {
        break          // ferma il ciclo
    }
    fmt.Println(i)     // 1 3 5 7
}

নেস্টেড লুপ থেকে প্রস্থান করতে লেবেল (বিরল কিন্তু দরকারী):

Go
Esterno:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i*j == 4 {
            break Esterno   // esce da entrambi
        }
    }
}

C-এর মতো কোনো , অপারেটর নেই

গো-তে আপনি for i, j := 0, 10; i < j; i, j = i+1, j-1 লিখতে পারবেন না: পোস্ট এক্সপ্রেশন একাধিক অ্যাসাইনমেন্ট গ্রহণ করে না। গো ব্যবহার করুন একাধিক অ্যাসাইনমেন্ট সিনট্যাক্স:

Go
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
    fmt.Println(i, j)
}

এটি পরিবর্তে কাজ করে কারণ i, j = i+1, j-1 একটি একক একাধিক অ্যাসাইনমেন্ট।

চেষ্টা করে দেখুন

ব্যায়াম#go.m2.l2.e1
প্রচেষ্টা: 0লোড হচ্ছে...

0 থেকে 4 পর্যন্ত সংখ্যাগুলিকে একটি ক্লাসিক থ্রি-ক্লজ সহ প্রিন্ট করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

`init এর জন্য; cond; পোস্ট { ... }` — এখানে init হল `i := 0`।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#go.m2.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

for এর 'while' ফর্মটি ব্যবহার করে 1 থেকে 10 পর্যন্ত মোট সমস্ত সংখ্যার যোগফল।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

'যখন' ফর্ম: `< শর্ত> { ... }` এর জন্য।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

Quiz#go.m2.l2.e3
প্রস্তুত

কোন ফর্ম গো-তে একটি অসীম লুপের প্রতিনিধিত্ব করে?

Go
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }
উত্তরের বিকল্প

রিক্যাপ

  • একটি একক কীওয়ার্ড for তিনটি ফর্ম সহ: ক্লাসিক, যখন, অসীম৷
  • break / continue ঐচ্ছিকভাবে নেস্টেড লুপের জন্য একটি লেবেল সহ৷
  • লেবেল Name: এর আগে for, অল্প ব্যবহার করা হয়েছে।
  • না , একজন অপারেটর হিসেবে: একাধিক অ্যাসাইনমেন্ট ব্যবহার করুন i, j = ..., ...।