Go slice’lar (kesimlar)
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) qaytaradicap()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]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 = 4Yuqoridagi 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 = 5W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
