آرایه برای ذخیره سازی داده هایی با نوع یکسان درون یک متغیر استفاده می شوند. برای تعریف آرایه ابتدا سایز آن و سپس نوع داده ی درون آن را مشخص میکنیم.
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 برای تبدیل یک ارایه به آرایه ای با طول مورد نظرمان استفاده کرد.
راجب محدودیت های آرایه ها در قسمت های بعدی بیشتر صحبت خواهیم کرد. در اینجا فقط بهش اشاره کردیم و نیاز نیست که کاملا اون رو درک کرده باشید! صرفا برای این بود که از این موضوع آگاه باشید.
جمع بندی
در این بخش با نوع داده آرایه, نحوه تعریف و استفاده از آن آشنا شدید. دیدید که میتوان یک آرایه را به تابع len داد و طول آن را دریافت کرد. در بخش های بعدی به صورت خیلی کامل تر با محدودیت های آرایه اشنا خواهید شد و مثال های بیشتری از آرایه خواهید دید.
قسمت قبل: متغیر ها و انواع داده | گولنگ به زبان ساده
قسمت بعد: نوع داده slice | گولنگ به زبان ساده