> For the complete documentation index, see [llms.txt](https://golang.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://golang.howtocode.dev/for.md).

# ফর

অন্য সব ল্যাঙ্গুয়েজে আমরা `ফর` লুপ দেখেছি। মজার ব্যাপার হচ্ছে গো তে সব ধরণের লুপিংই `ফর` দিয়ে করা হয়। অর্থাৎ গো তে `হোয়াইল`, `ডু-হোয়াইল` কিংবা `ফর-ইচ` লুপ দেখা যায় না। কিন্তু এগুলোর কাজ আমরা `ফর` দিয়েই চালিয়ে নিতে পারি বেশ সহজেই!

## ফর লুপ

আমরা প্রথমেই আমাদের পরিচিত ফর লুপ টা দেখে নেই। এখানে:

```go
for j := 7; j <= 9; j++ {
    fmt.Println(j)
}
```

আউটপুট:

```
7
8
9
```

এটা আমাদের সবার পরিচিত `ফর` লুপ। এখানে `j` এর ভ্যালু শুরুতেই 7 দেওয়া হয়েছে, এর ভ্যালু ৯ হওয়া পর্যন্ত লুপ চলবে। প্রতিবার লুপ শেষে `j` এর ভ্যালু এক বাড়িয়ে দেওয়া হচ্ছে।

## হোয়াইল লুপ

অন্য নানা ল্যাঙ্গুয়েজে একটা শর্তের উপর নির্ভর করে যেভাবে হোয়াইল লুপ ব্যবহার করতাম, গো তেও আমরা কাজটা প্রায় একইভাবে করবো। শুধু পার্থক্য এখানে আমরা `ফর` কিওয়ার্ডটি ব্যবহার করে `হোয়াইল` লুপের কাজ করি।

```go
package main

import "fmt"

func main() {

    i := 1
    for i <= 3 {
        fmt.Println(i)
        i = i + 1
    }


}
```

আউটপুট:

```
1
2
3
```

প্রথমে `for` এবং তারপর মূল কন্ডিশন দিতে হয়। লক্ষ্য করুন এখানে `for` এর কন্ডিশনটি ডিফাইন করার সময় কোন ধরনের ব্র্যাকেট এর প্রয়োজন হয় নি। `ফর` এর পর যদি একটাই শর্ত দেওয়া হয় তবে ঐ শর্তটি যতক্ষণ সত্য হবে ততক্ষণ লুপটি চলতে থাকবে।

যদি আমরা কোন কন্ডিশন না দেই তাহলে এটা ইনফিনিট লুপ এ চলতে থাকবে।

```go
for {
    fmt.Println("infinite loop")
    break
}
```

আউটপুট:

```
infinite loop
```

লক্ষ করুন, `break` কি-ওয়ার্ড ব্যবহার করার জন্য লুপটি একবার চলেই থেমে গেছে।

## ফর ইচ লুপ

গো তে আমরা `ফর` লুপ ব্যবহার করেই ফর ইচ লুপের কাজ করে থাকি। এটির জন্য প্রয়োজন পড়ে `range` ফাংশনের। আমরা তাই `range` চ্যাপ্টারে দেখবো কিভাবে আমরা ফর ইচ ব্যবহার করতে পারি।
