زبان برنامه‌نویسی گو/اسلایس‌ها

شرط ها if , else , switch اسلایس‌ها در گو نقشه‌ها (Maps)
زبان برنامه‌نویسی گو


اسلایس‌ها در زبان برنامه‌نویسی گو

ویرایش

اسلایس‌ها (Slice) در زبان برنامه‌نویسی گو یکی از انواع داده‌های پرکاربرد و انعطاف‌پذیر هستند. برخلاف آرایه‌ها که اندازه ثابتی دارند، اسلایس‌ها پویا هستند و می‌توانند به‌صورت خودکار رشد یا کاهش یابند. این ویژگی باعث می‌شود که اسلایس‌ها ابزاری ایده‌آل برای کار با مجموعه‌های داده باشند.

تعریف اسلایس

ویرایش

اسلایس‌ها می‌توانند به روش‌های مختلفی تعریف شوند:

ایجاد اسلایس از آرایه

ویرایش

یک اسلایس می‌تواند نماینده بخشی از یک آرایه باشد:

package main

import "fmt"

func main() {
    arr := [5]int{1, 2, 3, 4, 5}
    slice := arr[1:4] // شامل عناصر با ایندکس 1 تا 3
    fmt.Println(slice) // خروجی: [2 3 4]
}

ایجاد اسلایس با استفاده از تابع make

ویرایش

تابع make برای ایجاد اسلایس‌هایی با طول و ظرفیت مشخص استفاده می‌شود:

package main

import "fmt"

func main() {
    slice := make([]int, 3, 5)
    fmt.Println(slice) // خروجی: [0 0 0]
}

تعریف مستقیم اسلایس

ویرایش

می‌توانید یک اسلایس را به‌طور مستقیم مقداردهی اولیه کنید:

package main

import "fmt"

func main() {
    slice := []int{10, 20, 30}
    fmt.Println(slice) // خروجی: [10 20 30]
}

طول و ظرفیت اسلایس

ویرایش

هر اسلایس دارای دو خصوصیت اصلی است:

  • طول (Length): تعداد عناصر موجود در اسلایس.
  • ظرفیت (Capacity): تعداد کل عناصری که اسلایس می‌تواند ذخیره کند بدون نیاز به تخصیص حافظه جدید.

برای به‌دست آوردن طول و ظرفیت اسلایس از توابع len و cap استفاده می‌شود:

package main

import "fmt"

func main() {
    slice := make([]int, 3, 5)
    fmt.Println("طول:", len(slice))   // خروجی: طول: 3
    fmt.Println("ظرفیت:", cap(slice)) // خروجی: ظرفیت: 5
}

افزودن عناصر به اسلایس

ویرایش

از تابع append برای افزودن عناصر جدید به اسلایس استفاده می‌شود:

package main

import "fmt"

func main() {
    slice := []int{1, 2, 3}
    slice = append(slice, 4, 5)
    fmt.Println(slice) // خروجی: [1 2 3 4 5]
}

کپی کردن اسلایس

ویرایش

برای کپی کردن عناصر یک اسلایس به اسلایس دیگر از تابع copy استفاده می‌شود:

package main

import "fmt"

func main() {
    source := []int{1, 2, 3}
    destination := make([]int, len(source))
    copy(destination, source)
    fmt.Println(destination) // خروجی: [1 2 3]
}

اشاره‌گرها و اشتراک حافظه

ویرایش

اسلایس‌ها به داده‌های زیربنایی خود اشاره می‌کنند. این بدان معناست که تغییر داده‌ها از طریق یک اسلایس، بر دیگر اسلایس‌هایی که به همان داده اشاره دارند تأثیر می‌گذارد:

package main

import "fmt"

func main() {
    arr := [5]int{1, 2, 3, 4, 5}
    slice1 := arr[1:4]
    slice2 := arr[2:5]
    slice1[0] = 100 // تغییر در داده‌های مشترک
    fmt.Println(slice2) // خروجی: [100 3 4]
}

برش اسلایس

ویرایش

می‌توانید اسلایس‌ها را مجدداً برش دهید تا اسلایس جدیدی ایجاد کنید:

package main

import "fmt"

func main() {
    slice := []int{10, 20, 30, 40, 50}
    newSlice := slice[1:4] // عناصر با ایندکس 1 تا 3
    fmt.Println(newSlice)  // خروجی: [20 30 40]
}

جمع‌بندی اسلایس‌ها

ویرایش

اسلایس‌ها در زبان گو ابزاری قدرتمند برای کار با مجموعه‌های داده هستند. با استفاده از اسلایس‌ها، می‌توانید بدون نگرانی از محدودیت‌های آرایه‌ها، داده‌ها را مدیریت کنید. انعطاف‌پذیری و قابلیت رشد پویا از ویژگی‌های اصلی اسلایس‌ها هستند.