GO

GO — اسلایس ها (Slices)

آخرین بروزرسانی: 1404/08/14

اسلایس ها (Slices)

اسلایس (Slice) شبیه آرایه است ولی انعطاف پذیرتر. اسلایس می تواند بزرگ و کوچک شود. آرایه طول ثابت دارد. پس اسلایس برای کار روزمره راحت تر است.

ساخت اسلایس با []type{values}

می توان اسلایس خالی یا مقداردهی شده ساخت. طول (Length) تعداد عناصر است. ظرفیت (Capacity) حداکثر رشد فعلی اسلایس است.

package main
import (
  "fmt"
)

func main() {
  myslice1 := []int{}
  fmt.Println(len(myslice1))
  fmt.Println(cap(myslice1))
  fmt.Println(myslice1)

  myslice2 := []string{"Go", "Slices", "Are", "Powerful"}
  fmt.Println(len(myslice2))
  fmt.Println(cap(myslice2))
  fmt.Println(myslice2)
}

مشاهده در ادیتور

نکته: تابع len طول را می دهد و cap ظرفیت را می دهد.

ساخت اسلایس از روی آرایه

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

package main
import (
  "fmt"
)

func main() {
  arr1 := [6]int{10, 11, 12, 13, 14, 15}
  myslice := arr1[2:4]

  fmt.Printf("myslice = %v\n", myslice)
  fmt.Printf("length = %d\n", len(myslice))
  fmt.Printf("capacity = %d\n", cap(myslice))
}

مشاهده در ادیتور

ساخت اسلایس با make()

تابع make اسلایس می سازد. پارامتر دوم طول است. پارامتر سوم ظرفیت است. اگر ظرفیت ندهی، برابر طول می شود.

package main
import (
  "fmt"
)

func main() {
  myslice1 := make([]int, 5, 10)
  fmt.Printf("myslice1 = %v\n", myslice1)
  fmt.Printf("length = %d\n", len(myslice1))
  fmt.Printf("capacity = %d\n", cap(myslice1))

  myslice2 := make([]int, 5)
  fmt.Printf("myslice2 = %v\n", myslice2)
  fmt.Printf("length = %d\n", len(myslice2))
  fmt.Printf("capacity = %d\n", cap(myslice2))
}

مشاهده در ادیتور

گام های عملی

  1. یک اسلایس خالی بساز و len و cap را چاپ کن.
  2. از آرایه یک اسلایس بگیر و طول و ظرفیتش را ببین.
  3. با make اسلایس بساز و ظرفیت را تغییر بده.

جمع بندی سریع

  • اسلایس ها پویا هستند.
  • len تعداد عناصر است.
  • cap ظرفیت رشد فعلی است.
  • می توان از آرایه یا make ساخت.

برای شروع، صفحه آرایه ها را مرور کن. سپس برای تغییر عناصر، به ویرایش اسلایس ها برو. این صفحه درباره اسلایس ها مرجع کوتاه و کاربردی است.