Slice’ni o‘zgartirish


ULASHISH

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

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

Slice’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 = 12
O‘zingiz sinab ko‘ring »


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

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

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

Yangi slice’ning sig‘imi endi asl slice sig‘imidan kichik, chunki yangi asosiy massiv kichikroq.


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!