Skip to content

012. Slice ma'lumot turi

Golangda Slice haqida

Kirish

Golangda (Go) dasturlash tilida slice — bu ma'lumotlar turining qulay, kuchli va dinamik turlardan biri hisoblanadi. Slice Go tilidagi massivga o'xshaydi, lekin undan ko'ra ko'proq moslashuvchan. Slice hajmini o'zgartirsa bo'ladigan va yangi bo'laklarni olish imkonini beruvchi kuchli vositadir. Ushbu maqolada slice haqida batafsil tushuntirib, kod misollari bilan tushuntirib beramiz.


Slice nima?

Slice — bu massivga bog'langan ma'lumot tuzilmasi bo‘lib, u massivning bo‘laklarini ifodalaydi. Slice quyidagicha aniqlanadi:

var sliceName []elementType

Misol:

var numbers []int // Butun sonlardan iborat slice
var words []string // Satrlardan iborat slice

Slice yaratish usullari

1. Massivdan slice yaratish

Massivning ma'lum bir qismini olish orqali slice yaratishingiz mumkin:

package main

import "fmt"

func main() {
    arr := [5]int{10, 20, 30, 40, 50}
    slice := arr[1:4] // Indeks 1 dan 4 gacha (4 o'z ichiga kirmaydi)
    fmt.Println(slice) // Natija: [20 30 40]
}

2. make funksiyasi orqali slice yaratish

make funksiyasi yordamida slice yaratish juda qulay. Bu usul bo'sh slice yaratadi va unga kerakli o'lcham va sig'im belgilash imkonini beradi.

package main

import "fmt"

func main() {
    slice := make([]int, 3, 5) // O'lcham 3, sig'im 5
    fmt.Println(slice)       // Natija: [0 0 0]
    fmt.Println(len(slice))  // Natija: 3 (o'lcham)
    fmt.Println(cap(slice))  // Natija: 5 (sig'im)
}

3. To‘g‘ridan-to‘g‘ri qiymatlar bilan yaratish

Slice o‘z ichiga qiymatlarni to‘g‘ridan-to‘g‘ri belgilash orqali ham yaratishingiz mumkin:

package main

import "fmt"

func main() {
    slice := []string{"Apple", "Banana", "Cherry"}
    fmt.Println(slice) // Natija: [Apple Banana Cherry]
}

Slice bilan ishlash

Element qo‘shish

Slice hajmini o‘zgartirish uchun append funksiyasidan foydalaniladi:

package main

import "fmt"

func main() {
    slice := []int{1, 2, 3}
    slice = append(slice, 4, 5) // 4 va 5 ni qo'shish
    fmt.Println(slice)         // Natija: [1 2 3 4 5]
}

Slice bo‘laklash

Slice o‘zidan yangi bo‘laklar olish imkonini beradi:

package main

import "fmt"

func main() {
    slice := []int{10, 20, 30, 40, 50}
    newSlice := slice[1:4] // Indeks 1 dan 4 gacha
    fmt.Println(newSlice) // Natija: [20 30 40]
}

O‘lcham va sig‘imni tekshirish

len va cap funksiyalari yordamida slice'ning hajmi va sig‘imini aniqlash mumkin:

package main

import "fmt"

func main() {
    slice := []int{1, 2, 3, 4, 5}
    fmt.Println(len(slice)) // Natija: 5
    fmt.Println(cap(slice)) // Natija: 5
}

Slice va massivlar farqi

Xususiyat Massiv Slice
Hajmi O‘zgarmas O‘zgaruvchan
E'lon qilish var arr [5]int var slice []int
Ishlash samarasi Yuqori, lekin moslashuvchan emas Moslashuvchan va kuchli

Xulosa

Golangda slice dinamik va moslashuvchan ma'lumot turini ifodalaydi. U massivga qaraganda ko‘proq qulaylikni taqdim etadi, xususan, hajmi o‘zgarishi va bo‘laklar bilan ishlash.