پرش به محتوا

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

ویکی‎کتاب، کتابخانهٔ آزاد
شرط ها 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]
}

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

[ویرایش]

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