16 / 68

Arrays

Massivlar

Massiv (Array) — bu bir xil turdagi ma'lumotlarning belgilangan tartibdagi va o'zgarmas o'lchamli to'plamidir.

Faraz qilaylik, 5 nafar talabaning yoshini saqlashimiz kerak. Buning uchun 5 ta alohida o'zgaruvchi yaratish o'rniga bitta massiv yaratish ancha qulay va samaralidir.

Massiv elementlari


1. Goda massiv yaratish

Go tilida massiv quyidagi sintaksis yordamida e'lon qilinadi:

example.go
var array_variable = [size]datatype{elements of array}

Bu yerda:

  • size — massivning o'lchami (nechta element sig'ishi).
  • datatype — massivda saqlanadigan ma'lumot turi (int, string, float64 va h.k.).
  • {} qavslar ichida massiv elementlari vergul bilan ajratib yoziladi.

Misol: Massiv yaratish va chop etish

example.go
package main

import "fmt"

func main() {
    // 5 ta butun sondan iborat massiv e'lon qilamiz
    var arrayOfInteger = [5]int{1, 5, 8, 0, 3}

    fmt.Println(arrayOfInteger)
}

Natija:

kod
[1 5 8 0 3]

Bu yerda [5]int massiv faqat 5 ta butun son qabul qila olishini bildiradi.


2. Massiv e'lon qilishning boshqa usullari

O'lchami aniqlashtirilmagan massiv ([...])

Agar massiv o'lchamini qo'lda yozishni istamasangiz, uning o'rniga ... (uch nuqta) qo'yishingiz mumkin. Kompilyator elementlar soniga qarab massiv hajmini avtomatik belgilaydi:

example.go
package main

import "fmt"

func main() {
    // Hajmi avtomatik hisoblanadigan satrlar massivi
    var arrayOfString = [...]string{"Salom", "Go Dasturchi"}

    fmt.Println(arrayOfString)
}

Natija:

kod
[Salom Go Dasturchi]

[!WARNING] Agar [] ichini bo'sh qoldirsangiz, u massiv emas, balki slays (slice) bo'lib qoladi. Shuning uchun aniqlashtirilmagan o'lchamli massiv yaratishda [...] yozilishi shart!

Qisqa e'lon qilish operatori (:=) yordamida

Goda massivlarni qisqa := operatori orqali ham e'lon qilish mumkin:

example.go
package main

import "fmt"

func main() {
    // Qisqa e'lon qilish sintaksisi
    arrayOfString := [...]string{"Salom", "Go Dasturchi"}

    fmt.Println(arrayOfString)
}

3. Massiv elementlariga murojaat qilish (Accessing Elements)

Goda massivning har bir elementi tartib raqami — indeks bilan bog'langan bo'ladi. Elementga uning indeksi orqali murojaat qilinadi.

[!IMPORTANT] Massiv indekslari doimo 0 dan boshlanadi. Ya'ni birinchi element indeksi 0, ikkinchisiniki 1 va hokazo.

example.go
package main

import "fmt"

func main() {
    languages := [3]string{"Go", "Java", "C++"}

    // 0-indeksdagi elementni olish
    fmt.Println(languages[0]) // Go

    // 2-indeksdagi elementni olish
    fmt.Println(languages[2]) // C++
}

Natija:

kod
Go
C++

Go massividagi indekslar 0 dan boshlanadi


4. Massivni initsializatsiya qilish (Qiymat berish)

Indekslar orqali alohida qiymat berish:

example.go
package main

import "fmt"

func main() {
    // 3 ta elementli bo'sh massiv e'lon qilamiz
    var arrayOfIntegers [3]int

    // Indekslar bo'yicha qiymat tayinlaymiz
    arrayOfIntegers[0] = 5
    arrayOfIntegers[1] = 10
    arrayOfIntegers[2] = 15

    fmt.Println(arrayOfIntegers)
}

Natija:

kod
[5 10 15]

Aniq indeksdagi elementlarni initsializatsiya qilish

Goda faqat ma'lum bir indekslarga qiymat berib, qolganlarini standart (default) qiymatda qoldirish mumkin:

example.go
package main

import "fmt"

func main() {
    // Faqat 0 va 3-indekslarga qiymat beramiz
    arrayOfIntegers := [5]int{0: 7, 3: 9}

    fmt.Println(arrayOfIntegers)
}

Natija:

kod
[7 0 0 9 0]

Bu yerda ko'rsatilmagan indekslar (1, 2, 4) avtomatik ravishda int turning birlamchi qiymati bo'lgan 0 bilan to'ldirildi.


5. Massiv elementlarini o'zgartirish

Massiv elementini o'zgartirish uchun kerakli indeksga yangi qiymat o'zlashtirish kifoya:

example.go
package main

import "fmt"

func main() {
    weather := [3]string{"Yomg'irli", "Quyoshli", "Bulutli"}

    // 2-indeksdagi elementni o'zgartiramiz
    weather[2] = "Bo'ronli"

    fmt.Println(weather)
}

Natija:

kod
[Yomg'irli Quyoshli Bo'ronli]

6. Massiv uzunligini aniqlash (len())

Massivda nechta element borligini bilish uchun o'rnatilgan len() funksiyasidan foydalaniladi:

example.go
package main

import "fmt"

func main() {
    var arrayOfIntegers = [...]int{1, 5, 8, 0, 3, 10}

    // len() yordamida massiv uzunligini topamiz
    length := len(arrayOfIntegers)

    fmt.Println("Massiv uzunligi:", length)
}

Natija:

kod
Massiv uzunligi: 6

7. Massivni sikl yordamida aylanib chiqish

Massivning har bir elementini navbatma-navbat ekranga chiqarish uchun for siklidan foydalanish mumkin:

example.go
package main

import "fmt"

func main() {
    age := [...]int{12, 4, 5}

    // Massiv bo'ylab sikl
    for i := 0; i < len(age); i++ {
        fmt.Println(age[i])
    }
}

Natija:

kod
12
4
5

8. Ko'p o'lchamli massivlar (Multidimensional Arrays)

Ko'p o'lchamli massiv — bu massivlarning massividir. Eng ko'p qo'llaniladigani ikki o'lchamli (2D) massiv bo'lib, u qatorlar va ustunlardan iborat matritsani ifodalaydi:

0-ustun1-ustun
0-qatorarrayInteger[0][0] = 1arrayInteger[0][1] = 2
1-qatorarrayInteger[1][0] = 3arrayInteger[1][1] = 4

Misol: 2 o'lchamli massiv

example.go
package main

import "fmt"

func main() {
    // 2x2 o'lchamli massiv yaratamiz
    arrayInteger := [2][2]int{{1, 2}, {3, 4}}

    // Ichma-ich for sikllari orqali elementlarni chiqaramiz
    for i := 0; i < 2; i++ {
        for j := 0; j < 2; j++ {
            fmt.Println(arrayInteger[i][j])
        }
    }
}

Natija:

kod
1
2
3
4

Ko'p o'lchamli massivni matritsa sifatida ham tasavvur qilish mumkin:

2 o'lchamli massiv (matritsa)