آرایهها (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 استفاده میشود.این مبحث بخشی از دوره آموزش کامل گو است.