Go slice’lar (kesimlar)


ULASHISH

Go slice’lar (kesimlar)

Slice’lar (kesimlar) massivlarga o‘xshaydi, lekin ular kuchliroq va moslashuvchanroq.

Massivlar singari slice’lar ham bir xil tipdagi bir nechta qiymatni bitta o‘zgaruvchida saqlash uchun ishlatiladi.

Biroq massivlardan farqli o‘laroq, slice uzunligi ehtiyojga qarab kattalashishi va kichrayishi mumkin.

Go tilida slice yaratishning bir nechta usuli bor:

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

[]datatype{values} yordamida slice yaratish

Sintaksis

slice_name := []datatype{values}

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

myslice := []int{}

Yuqoridagi kod uzunligi 0 va sig‘imi 0 bo‘lgan bo‘sh slice’ni e’lon qiladi.

Slice’ni e’lon qilish paytida initsializatsiya qilish uchun quyidagidan foydalaning:

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

Yuqoridagi kod uzunligi 3 va sig‘imi ham 3 bo‘lgan butun sonlar slice’ini e’lon qiladi.

Go tilida slice uzunligi va sig‘imini qaytaradigan ikkita funksiya bor:

  • len() funksiyasi — slice uzunligini (slice’dagi elementlar sonini) qaytaradi
  • cap() funksiyasi — slice sig‘imini (slice kattalashishi yoki kichrayishi mumkin bo‘lgan elementlar sonini) qaytaradi

Misol

Ushbu misolda []datatype{values} formati yordamida slice’larni qanday yaratish ko‘rsatilgan:

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]
O‘zingiz sinab ko‘ring »

Yuqoridagi misolda birinchi slice’da (myslice1) haqiqiy elementlar ko‘rsatilmagan, shuning uchun uning uzunligi ham, sig‘imi ham nolga teng bo‘ladi. Ikkinchi slice’da (myslice2) elementlar ko‘rsatilgan, shuning uchun uning uzunligi ham, sig‘imi ham ko‘rsatilgan haqiqiy elementlar soniga teng.



Massivdan slice yaratish

Massivni kesib (slicing), slice yaratishingiz mumkin:

Sintaksis

var myarray = [length]datatype{values} // An array myslice := myarray[start:end] // A slice made from the array

Misol

Ushbu misolda massivdan slice’ni qanday yaratish ko‘rsatilgan:

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
O‘zingiz sinab ko‘ring »

Yuqoridagi misolda myslice — uzunligi 2 bo‘lgan slice. U uzunligi 6 bo‘lgan arr1 massividan yaratilgan.

Slice massivning qiymati 12 bo‘lgan uchinchi elementidan boshlanadi (esda tuting, massiv indekslari 0 dan boshlanadi. Ya’ni [0] — birinchi element, [1] — ikkinchi element va hokazo). Slice massiv oxirigacha kattalashishi mumkin. Demak, slice sig‘imi 4 ga teng.

Agar myslice 0-elementdan boshlanganida, slice sig‘imi 6 bo‘lardi.


make() funksiyasi yordamida slice yaratish

make() funksiyasi yordamida ham slice yaratish mumkin.

Sintaksis

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

Eslatma: Agar capacity parametri berilmasa, u length qiymatiga teng bo‘ladi.

Misol

Ushbu misolda make() funksiyasi yordamida slice’larni qanday yaratish ko‘rsatilgan:

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))   // with omitted capacity   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
O‘zingiz sinab ko‘ring »

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!