Create Slice

...

SU

Go Slice'lar

Slice'lar massivlarga o'xshaydi, lekin ular kuchliroq va moslashuvchanroq.

Massivlar kabi, slice'lar ham bitta o'zgaruvchida bir xil turdagi bir nechta qiymatlarni saqlash uchun ishlatiladi.

Biroq, massivlardan farqli o'laroq, slice'ning uzunligi kerakli darajada o'sishi va kamayishi mumkin.

Go-da slice yaratishning bir necha usuli mavjud:

  • []datatype{values} formatidan foydalanish
  • Massivdan slice yaratish
  • make() funktsiyasidan foydalanish

[]datatype{values} Formatida Slice Yaratish

Sintaksis

slice_nomi := []datatype{values}

Slice'ni e'lon qilishning keng tarqalgan usuli quyidagicha:

myslice := []int{}

Yuqoridagi kod bo'sh slice e'lon qiladi, uzunligi va sig'imi 0.

Slice'ni deklaratsiya paytida inicializatsiya qilish uchun:

myslice := []int{1,2,3}

Yuqoridagi kod butun sonlar slice'ini uzunligi va sig'imi 3 bo'lgan holda e'lon qiladi.

Go-da slice'ning uzunligi va sig'imini qaytaradigan ikki funktsiya mavjud:

  • len() funktsiyasi - slice uzunligini (slice'dagi elementlar sonini) qaytaradi
  • cap() funktsiyasi - slice sig'imini (slice qancha o'sishi yoki kamayishi mumkinligini) qaytaradi

Misol Bu misol []datatype{values} formatidan foydalanib slice yaratishni ko'rsatadi:

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)
}

Natija:

0
0
[]
4
4
[Go Slices Are Powerful]

Yuqoridagi misolda, birinchi slice (myslice1) uchun haqiqiy elementlar ko'rsatilmagan, shuning uchun slice uzunligi va sig'imi nolga teng bo'ladi. Ikkinchi slice (myslice2) uchun elementlar ko'rsatilgan va uzunlik va sig'im ko'rsatilgan elementlar soniga teng.

Massivdan Slice Yaratish

Massivni kesib slice yaratish mumkin:

Sintaksis

var myarray = [length]datatype{values} // Massiv
myslice := myarray[start:end] // Massivdan yaratilgan slice

Misol Bu misol massivdan slice yaratishni ko'rsatadi:

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))
}

Natija:

myslice = [12 13]
length = 2
capacity = 4

Yuqoridagi misolda, myslice uzunligi 2 bo'lgan slice. Bu arr1 massividan yaratilgan bo'lib, massiv uzunligi 6. Slice massivning uchinchi elementidan boshlanadi (12 qiymatiga ega). Slice massivning oxirigacha o'sishi mumkin. Shuning uchun slice sig'imi 4 ga teng.

Agar myslice 0-elementdan boshlangan bo'lsa, slice sig'imi 6 bo'lardi.

make() Funktsiyasi Bilan Slice Yaratish

make() funktsiyasidan ham slice yaratish uchun foydalanish mumkin.

Sintaksis

slice_nomi := make([]type, length, capacity)

Eslatma: Agar sig'im parametrini ko'rsatilmasa, u uzunlikka teng bo'ladi.

Misol Bu misol make() funktsiyasidan foydalanib slice yaratishni ko'rsatadi:

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))
 
  // sig'im ko'rsatilmagan holda
  myslice2 := make([]int, 5)
  fmt.Printf("myslice2 = %v\n", myslice2)
  fmt.Printf("length = %d\n", len(myslice2))
  fmt.Printf("capacity = %d\n", cap(myslice2))
}

Natija:

myslice1 = [0 0 0 0 0]
length = 5
capacity = 10
myslice2 = [0 0 0 0 0]
length = 5
capacity = 5

Ushbu sahifada

GitHubda tahrirlash