نوع داده آرایه (array) | گولنگ به زبان ساده

تاریخ انتشار:
نوع داده آرایه (array) | گولنگ به زبان ساده
نوع داده array یا آرایه رو بررسی میکنیم, با دستورات مرتبط با اون آشنا میشیم و نحوه استفاده ازش رو یاد میگیریم.

آرایه برای ذخیره سازی داده هایی با نوع یکسان درون یک متغیر استفاده می شوند. برای تعریف آرایه, سایز  و نوع داده های آن را مشخص میکنیم.

var x [3]int

در مثال بالا یک متغیر با نام x تعریف کردیم. نوع این متغیر آرایه ای عددی (int) با طول ۳ است. چون که هیچ مقدار اولیه ای برای آرایه مشخص نکردیم, مقادیر آرایه برابر با مقدار اولیه int یعنی صفر (۰) مقدار دهی میشوند.

برای دسترسی به مقادیر آرایه میتونیم به صورت زیر عمل کنیم:

package main

import log

func main() {
    var x [3]int
    
    x[0] = 5
    x[1] = 10
    x[2] = 13

    log.Println(x[0], x[1], x[2])
}

// در مثال بالا ابتدا مقادیر ۵ و ۱۰ و ۱۳ رو داخل آرایه قرار دادیم و در نهایت توی خروجی نمایش دادیم

در زبان گولنگ با استفاده از اندیس آرایه میتونیم به مقادیر داخل آن دسترسی داشته باشیم. اندیس از صفر (۰) شروع میشه و تا یکی کمتر از سایز ارایه تموم میشه. مثلا اگه سایز آرایه ۳ باشد شما سه اندیس ۰ و ۱ و ۲ خواهید داشت.

در مثال بالا با اندیس (index) های ۰ , ۱ و ۲ میتوانیم به مقادیر داخل ارایه دسترسی داشته باشیم. میتونیم توی هر اندیس مقداری رو بنویسیم یا مقدار فعلی هر اندیس رو بخونیم.

اگر بخواهیم در هنگام تعریف آرایه مقادیر اولیه آن را مشخص کنیم میتونیم به صورت زیر از لیترال آرایه (array literal) استفاده کنیم:

var x = [3]int{2, 4, 6}

اگر بخواهید آرایه ای تعریف کنید و برخی از اندیس های آن را مقدار دهی کنید میتونید به صورت زیر عمل کنید:

var x = [12]int{1, 5: 4, 6, 10: 100, 15}

log.Println(x[0])  // 1
log.Println(x[1])  // 0
log.Println(x[2])  // 0
log.Println(x[3])  // 0
log.Println(x[4])  // 0
log.Println(x[5])  // 4
log.Println(x[6])  // 6
log.Println(x[7])  // 0
log.Println(x[8])  // 0
log.Println(x[9])  // 0
log.Println(x[10]) // 100
log.Println(x[11]) // 15
log.Println(x[12]) // 0

در مثال بالا تنها اندیس هایی که نیاز داشتیم رو مقدار دهی کردیم. شما میتونید از علامت دو نقطه (:) برای مشخص کردن اندیس مورد نظرتون استفاده کنید. در سمت چپ, اندیس, و در سمت راست, مقدار مورد نظرتون قرار میگیره.

در صورتی که از array literal برای مقدار دهی آرایه استفاده میکنید میتونید سایز آرایه رو میتوان به صورت زیر مشخص کرد:

var x = [...]int{10, 20, 30}

برای مقایسه دو آرایه میتونیم از عملگر های == یا != استفاده کنیم. دو آرایه برابرند در صورتی که دارای سایز و مقادیر یکسانی باشند.

var x = [...]int{1, 2, 3}
var y = [3]int{1, 2, 3}
fmt.Println(x == y) // prints true

 در گولنگ میتوان آرایه های چند بعدی را نیز به صورت زیر شبیه سازی کرد:

var x [2][3]float32

در مثال بالا متغیر x از نوع آرایه ای با طول ۲ است که این آرایه خود از نوع آرایه ای شامل ۳ عدد اعداد اعشاری ۳۲ بیتی (float32) است!

برای خواندن و نوشتن در آرایه ها نمیتوانیم از اعداد منفی استفاده کنیم! اگر از اعداد منفی استفاده کنیم برنامه کامپایل می شود اما در هنگام اجرا با خطا مواجهه خواهد شد.

و به عنوان نکته پایانی , در مواقعی که نیاز دارید تا طول یک آرایه را بدست بیاورید میتوانید از تابع len استفاده کنید. این تابع یک آرایه را به عنوان ورودی دریافت میکند و طول آن را برمیگرداند.

package main

import "fmt"

func main() {
    var x [5]float64
    fmt.Println(len(x)) // 5

    fmt.Println(len([...]int{4, 10, 8: 22, 40, 43})) // 11
}

آرایه ها باید تنها در زمانی استفاده شوند که از طول آرایه آگاهی داریم.

در گولنگ , آرایه ها به دلیل محدودیت هایی که دارند خیلی به ندرت مورد استفاده قرار میگیرند:

  • سایز و نوع آیتم های یک آرایه بخشی از دیتا تایپ آرایه است بدین معنی که آرایه ای که به صورت [3]int تعریف شده باشد دارای دیتا تایپ متفاوتی از آرایه ای است که به صورت [5]int تعریف شده باشد. این بدین معنی است که شما نمیتوانید آرایه های با سایز یا نوع آیتم متفاوت را به جای یکدیگر استفاده کنید.
  • سایز آرایه باید در هنگام تعریف آرایه مشخص شود و پس از آن قابل تغییر نخواهد بود. همچنین نمیتوان از یک متغیر برای تعریف سایز آرایه استفاده کرد. اگر اینکار را انجام دهیم با خطای کامپایلر مواجه خواهیم شد.
  • نمیتوان از type conversion برای تبدیل یک آرایه به آرایه ای با طول مورد نظرمان استفاده کرد.
  • آرایه ها بعد از تعریف شدن (decleration) قابل استفاده هستند و تمام اندیس های آرایه در صورتی که مقدار اولیه ای به آنها نسبت نداده شده باشد دارای مقدار صفر خود (zero value) خواهند بود.

راجب محدودیت های آرایه ها در قسمت های بعدی بیشتر صحبت خواهیم کرد. در اینجا فقط بهش اشاره کردیم و نیاز نیست که کاملا اون رو درک کرده باشید!‌ صرفا برای این بود که از این موضوع آگاه باشید.

جمع بندی

در این بخش با نوع داده آرایه, نحوه تعریف و استفاده از آن آشنا شدید. دیدید که میتوان یک آرایه را به تابع len داد و طول آن را دریافت کرد. در بخش های بعدی به صورت خیلی کامل تر با محدودیت های آرایه اشنا خواهید شد و مثال های بیشتری از آرایه خواهید دید.


قسمت قبل: متغیر ها و انواع داده | گولنگ به زبان ساده

قسمت بعد: نوع داده slice | گولنگ به زبان ساده