Slice'ning ma'lum bir elementiga indeks raqami orqali murojaat qilish mumkin.
Go tilida indekslar 0 dan boshlanadi. Ya'ni, [0]
birinchi element, [1]
ikkinchi element va hokazo.
Misol
Bu misolda prices
slice'dagi birinchi va uchinchi elementlarga qanday murojaat qilish ko'rsatilgan:
package main
import ( " fmt " )
func main () {
prices := [] int { 10 , 20 , 30 }
fmt. Println (prices[ 0 ])
fmt. Println (prices[ 2 ])
}
Natija:
Indeks raqami orqali slice'ning ma'lum bir elementini ham o'zgartirish mumkin.
Misol
Bu misol prices
slice'dagi uchinchi elementni qanday o'zgartirishni ko'rsatadi:
package main
import ( " fmt " )
func main () {
prices := [] int { 10 , 20 , 30 }
prices[ 2 ] = 50
fmt. Println (prices[ 0 ])
fmt. Println (prices[ 2 ])
}
Natija:
append()
funktsiyasi yordamida slice oxiriga elementlar qo'shish mumkin.
Sintaksis
slice_nomi = append (slice_nomi, element1, element2, ... )
Misol
Bu misolda slice oxiriga qanday element qo'shish ko'rsatiladi:
package main
import ( " fmt " )
func main () {
myslice1 := [] int { 1 , 2 , 3 , 4 , 5 , 6 }
fmt. Printf ( "myslice1 = %v\n " , myslice1)
fmt. Printf ( "length = %d\n " , len (myslice1))
fmt. Printf ( "capacity = %d\n " , cap (myslice1))
myslice1 = append (myslice1, 20 , 21 )
fmt. Printf ( "myslice1 = %v\n " , myslice1)
fmt. Printf ( "length = %d\n " , len (myslice1))
fmt. Printf ( "capacity = %d\n " , cap (myslice1))
}
Natija:
myslice1 = [1 2 3 4 5 6]
length = 6
capacity = 6
myslice1 = [1 2 3 4 5 6 20 21]
length = 8
capacity = 12
Bitta slice'dagi barcha elementlarni ikkinchi slice'ga qo'shish uchun append()
funktsiyasidan foydalaning.
Sintaksis
slice3 = append (slice1, slice2 ... )
Eslatma: slice2
dan keyin ...
qo'shilishi kerak.
Misol
Bu misol bitta slice'ni ikkinchisiga qanday qo'shishni ko'rsatadi:
package main
import ( " fmt " )
func main () {
myslice1 := [] int { 1 , 2 , 3 }
myslice2 := [] int { 4 , 5 , 6 }
myslice3 := append (myslice1, myslice2 ... )
fmt. Printf ( "myslice3= %v\n " , myslice3)
fmt. Printf ( "length= %d\n " , len (myslice3))
fmt. Printf ( "capacity= %d\n " , cap (myslice3))
}
Natija:
myslice3=[1 2 3 4 5 6]
length=6
capacity=6
Massivlardan farqli o'laroq, slice'ning uzunligini o'zgartirish mumkin.
Misol
Bu misol slice uzunligini qanday o'zgartirishni ko'rsatadi:
package main
import ( " fmt " )
func main () {
arr1 := [ 6 ] int { 9 , 10 , 11 , 12 , 13 , 14 } // Massiv
myslice1 := arr1[ 1 : 5 ] // Slice massivdan kesilgan
fmt. Printf ( "myslice1 = %v\n " , myslice1)
fmt. Printf ( "length = %d\n " , len (myslice1))
fmt. Printf ( "capacity = %d\n " , cap (myslice1))
myslice1 = arr1[ 1 : 3 ] // Uzunlikni qayta slice qilish orqali o'zgartirish
fmt. Printf ( "myslice1 = %v\n " , myslice1)
fmt. Printf ( "length = %d\n " , len (myslice1))
fmt. Printf ( "capacity = %d\n " , cap (myslice1))
myslice1 = append (myslice1, 20 , 21 , 22 , 23 ) // Elementlar qo'shish orqali uzunlikni o'zgartirish
fmt. Printf ( "myslice1 = %v\n " , myslice1)
fmt. Printf ( "length = %d\n " , len (myslice1))
fmt. Printf ( "capacity = %d\n " , cap (myslice1))
}
Natija:
myslice1 = [10 11 12 13]
length = 4
capacity = 5
myslice1 = [10 11]
length = 2
capacity = 5
myslice1 = [10 11 20 21 22 23]
length = 6
capacity = 10
Slice'lar bilan ishlaganda, Go barcha ichki elementlarni xotiraga yuklaydi. Agar massiv katta bo'lsa va sizga faqat bir nechta element kerak bo'lsa, ularni copy()
funktsiyasi yordamida ko'chirish ma'qul.
copy()
funktsiyasi slice uchun kerakli elementlar bilan yangi massiv yaratadi, bu dastur ishlatadigan xotirani kamaytiradi.
Sintaksis
copy()
funktsiyasi ikkita slice oladi: dest
va src
, va src
dan dest
ga ma'lumotlarni ko'chiradi. Ko'chirilgan elementlar sonini qaytaradi.
Misol
Bu misol copy()
funktsiyasidan qanday foydalanishni ko'rsatadi:
package main
import ( " fmt " )
func main () {
numbers := [] int { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 }
// Asl slice
fmt. Printf ( "numbers = %v\n " , numbers)
fmt. Printf ( "length = %d\n " , len (numbers))
fmt. Printf ( "capacity = %d\n " , cap (numbers))
// Faqat kerakli raqamlar bilan nusxa yaratish
neededNumbers := numbers[: len (numbers) - 10 ]
numbersCopy := make ([] int , len (neededNumbers))
copy (numbersCopy, neededNumbers)
fmt. Printf ( "numbersCopy = %v\n " , numbersCopy)
fmt. Printf ( "length = %d\n " , len (numbersCopy))
fmt. Printf ( "capacity = %d\n " , cap (numbersCopy))
}
Natija:
// Asl slice
numbers = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
length = 15
capacity = 15
// Yangi slice
numbersCopy = [1 2 3 4 5]
length = 5
capacity = 5
Yangi slice sig'imi asl slice'dan kichikroq bo'ldi, chunki yangi massiv kichikroq.