# এ্যারে

গো ল্যাঙ্গুয়েজে এ্যারে হলো একই ধরনের আইটেমের সমষ্টি বা তালিকা। এবং এর আইটেম সংখ্যা নির্দিষ্ট থাকে। অর্থাৎ এ্যারে হয় ফিক্সড সাইজ।

এ্যারে ডিফাইন করা খুবই সহজ। প্রথমে `var` কিওয়ার্ড, এরপর ভ্যারিয়েবল এর নাম এবং শেষে স্কোয়ার ব্র্যাকেট `[]` এর মধ্যে এ্যারের সাইজ এবং ব্র্যাকেট শেষে এ্যারের টাইপ।

```go
var a [5]int
```

এখানে `a` হলো একটি এ্যারে যেখানে আমরা ৫টি ইন্টিজার ভ্যালু সংরক্ষণ করতে পারি। গো ও জিরো বেইজড ইনডেক্স ফলো করে। অর্থাৎ প্রথম এলিমেন্টটির পজিশন হয় `0`। সুতরাং শেষ এলিমেন্টটি আমরা এ্যাক্সেস করতে পারি এভাবে -

```go
a[4] = 100
fmt.Println("get:", a[4])
```

আউটপুট:

```
get: 100
```

এখানে আমরা শেষ এলিমেন্টটির ভ্যালু হিসেবে `100` সেট করে দিচ্ছি। বিল্ট ইন `len` ফাংশনটি ব্যবহার করে আমরা এ্যারের সাইজ জানতে পারি।

```go
fmt.Println("len:", len(a))
```

আউটপুট:

```
len: 5
```

আমরা চাইলে এ্যারে ডিক্লেয়ারেশনের পর কার্লি ব্রেইসের মধ্যে আইটেম গুলো ডিফাইন করে দিতে পারি। এভাবে আমরা নিচের মত করে একই সাথে এ্যারে ডিক্লেয়ার এবং তার ভ্যালুগুলো সেট করে দেই:

```go
b := [5]int{1, 2, 3, 4, 5}
fmt.Println("dcl:", b)
```

আউটপুট:

```
dcl: [1 2 3 4 5]
```

মাল্টিডাইমেনশনাল এ্যারের জন্য প্রয়োজনীয় সংখ্যক স্কোয়ার ব্র্যাকেট যোগ করে সেগুলোর মধ্যে ঐ ডাইমেনশনে আইটেম সংখ্যা নির্দেশ করলেই হয়। যেমন:

```go
var twoD [2][3]int
```

আমরা এর ভ্যালু গুলো ফর লুপ ব্যবহার করে এ্যাসাইন করে দিতে পারি:

```go
    for i := 0; i < 2; i++ {
        for j := 0; j < 3; j++ {
            twoD[i][j] = i + j
        }
    }
    fmt.Println("2d: ", twoD)
```

আউটপুট:

```
2d:  [[0 1 2] [1 2 3]]
```

তবে সাধারনত গো তে আমরা এ্যারের চেয়ে স্লাইস বেশি ব্যবহার করে থাকি। পরবর্তী চ্যাপ্টারে আমরা স্লাইস নিয়ে দেখবো।
