آرایه‌ها (Arrays)

تعریف آرایه با طول ثابت، دسترسی با ایندکس، پیمایش و محدودیت‌های آرایه در Go.

آرایه چیست؟

آرایه مجموعه‌ای از عناصر هم‌نوع با طول ثابت است. طول آرایه در زمان تعریف مشخص می‌شود و قابل تغییر نیست.

تعریف آرایه

// با طول مشخص و مقدار صفر
var numbers [5]int           ← [0 0 0 0 0]

// با مقادیر اولیه (طول خودکار مشخص می‌شود)
colors := [3]string{"قرمز", "سبز", "آبی"}

// با ... (طول از تعداد مقادیر)
fruits := [...]string{"سیب", "موز", "پرتقال"}

// تعریف با ایندکس مشخص
arr := [5]int{1: 10, 3: 30}  ← [0 10 0 30 0]

دسترسی و تغییر عناصر

numbers := [5]int{10, 20, 30, 40, 50}

fmt.Println(numbers[0])     ← 10 (اولین عنصر)
fmt.Println(numbers[4])     ← 50 (آخرین عنصر)

numbers[0] = 100            ← تغییر مقدار
fmt.Println(numbers[0])     ← 100

طول آرایه

fmt.Println(len(numbers))   ← 5

پیمایش آرایه

// با ایندکس
for i := 0; i < len(numbers); i++ {
    fmt.Println(i, numbers[i])
}

// با for range (پیشنهادی)
for index, value := range numbers {
    fmt.Println(index, value)
}

// فقط مقادیر (ایندکس لازم نیست)
for _, value := range numbers {
    fmt.Println(value)
}
در for range اگر به ایندکس نیاز ندارید، با _ (underscore) آن را نادیده بگیرید — در Go متغیر بلااستفاده خطای کامپایل است!

آرایه چندبعدی

matrix := [2][3]int{
    {1, 2, 3},
    {4, 5, 6},
}

fmt.Println(matrix[1][2])   ← 6 (سطر ۱، ستون ۲)

// پیمایش
for _, row := range matrix {
    for _, v := range row {
        fmt.Print(v, " ")
    }
    fmt.Println()
}

محدودیت‌های آرایه

آرایه‌ها در Go مقداری (Value) هستند نه مرجع — هنگام انتقال به تابع، کل آرایه کپی می‌شود! همچنین طول آرایه بخشی از نوع آن است: [5]int و [10]int دو نوع متفاوت‌اند. به همین دلیل در عمل بیشتر از Slice استفاده می‌شود.

این مبحث بخشی از دوره آموزش کامل گو است.

ابزارهای مرتبط