Slice’ni o‘zgartirish
Slice elementlariga murojaat qilish
Slice’ning ma’lum bir elementiga uning indeks raqami orqali murojaat qilishingiz mumkin.
Go tilida indekslar 0 dan boshlanadi. Ya’ni [0] — birinchi element, [1] — ikkinchi element va hokazo.
Misol
Ushbu misolda prices slice’ining birinchi va uchinchi elementlariga 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:
10
30Slice elementlarini o‘zgartirish
Shuningdek, slice’ning ma’lum bir elementini uning indeks raqami orqali o‘zgartirishingiz mumkin.
Misol
Ushbu misolda prices slice’ining uchinchi elementini qanday o‘zgartirish ko‘rsatilgan:
package main
import "fmt"
func main() {
prices := []int{10,20,30}
prices[2] = 50
fmt.Println(prices[0])
fmt.Println(prices[2])
}
Natija:
10
50Slice’ga element qo‘shish
append() funksiyasi yordamida slice oxiriga element qo‘shishingiz mumkin:
Sintaksis
slice_name = append(slice_name, element1, element2, ...)
Misol
Ushbu misolda slice oxiriga elementlarni qanday qo‘shish ko‘rsatilgan:
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 = 12Bir slice’ni boshqa slice’ga qo‘shish
Bir slice’ning barcha elementlarini boshqa slice’ga qo‘shish uchun append() funksiyasidan foydalaning:
Sintaksis
slice3 = append(slice1, slice2...)
Eslatma: Bir slice elementlarini boshqasiga qo‘shayotganda slice2 ortidan yoziladigan '...' majburiy.
Misol
Ushbu misolda bir slice’ni boshqa slice’ga qanday qo‘shish ko‘rsatilgan:
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=6Slice uzunligini o‘zgartirish
Massivlardan farqli o‘laroq, slice uzunligini o‘zgartirish mumkin.
Misol
Ushbu misolda slice uzunligini qanday o‘zgartirish ko‘rsatilgan:
package main
import "fmt"
func main() {
arr1 := [6]int{9, 10, 11, 12, 13, 14} // An array
myslice1 := arr1[1:5] // Slice array
fmt.Printf("myslice1 = %v\n", myslice1)
fmt.Printf("length = %d\n", len(myslice1))
fmt.Printf("capacity = %d\n", cap(myslice1))
myslice1 = arr1[1:3] // Change length by re-slicing the array
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) // Change length by appending items
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 = 10Xotiradan samarali foydalanish
Slice’lardan foydalanganda Go asosiy (underlying) massivning barcha elementlarini xotiraga yuklaydi.
Agar massiv katta bo‘lsa va sizga uning bir nechta elementigina kerak bo‘lsa, bu elementlarni copy() funksiyasi yordamida nusxalab olgan ma’qul.
copy() funksiyasi slice uchun faqat kerakli elementlardan iborat yangi asosiy massiv yaratadi. Bu dastur ishlatadigan xotira hajmini kamaytiradi.
Sintaksis
copy(dest, src)
copy() funksiyasi ikkita slice’ni — dest va srcni qabul qiladi hamda ma’lumotlarni srcdan destga nusxalaydi. U nusxalangan elementlar sonini qaytaradi.
Misol
Ushbu misolda copy() funksiyasidan qanday foydalanish ko‘rsatilgan:
package main
import "fmt"
func main() {
numbers := []int{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
// Original slice
fmt.Printf("numbers = %v\n", numbers)
fmt.Printf("length = %d\n", len(numbers))
fmt.Printf("capacity = %d\n", cap(numbers))
// Create copy with only needed numbers
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:
// Original slice
numbers = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
length = 15
capacity =
15
// New slice
numbersCopy = [1 2 3 4 5]
length = 5
capacity = 5Yangi slice’ning sig‘imi endi asl slice sig‘imidan kichik, chunki yangi asosiy massiv kichikroq.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
