12 / 68

for Loop

Takrorlanish sikllari

Dasturlashda sikl (loop) bir xil kod blokini ma'lum bir shart bajarilguncha qayta-qayta takrorlash uchun ishlatiladi.

Masalan, bitta xabarni 100 marta ekranga chiqarish uchun bir xil kodni 100 marta yozib chiqish shart emas; buning uchun sikldan foydalanish kifoya.

[!NOTE] Go dasturlash tilida faqatgina bitta sikl kalit so'zi mavjud — bu for. C, Java yoki Python kabi tillardagi while va do-while sikllari ham Goda aynan for operatori yordamida amalga oshiriladi.


1. Go for siklining asosiy sintaksisi

Go tilida klassik for siklining sintaksisi quyidagicha:

example.go
for boshlanish; shart; o'zgarish {
    // takrorlanadigan kod bloki
}

Bu yerda:

  1. boshlanish (initialization): Sikl hisoblagich o'zgaruvchisini yaratadi va faqat bir marta, sikl boshida ishlaydi.
  2. shart (condition): Har bir takrorlanishdan oldin tekshiriladi. Agar shart true bo'lsa, sikl tanasi bajariladi; agar false bo'lsa, sikl to'xtaydi.
  3. o'zgarish (update): Har bir aylanish oxirida hisoblagich qiymatini o'zgartiradi (masalan, i++).

Goda for siklining ishlash sxemasi


2. 1-misol: Dastlabki 5 ta natural sonni chiqarish

example.go
package main

import "fmt"

func main() {
    // i o'zgaruvchisi 6 ga teng bo'lganda sikl to'xtaydi
    for i := 1; i <= 5; i++ {
        fmt.Println(i)
    }
}

Natija:

kod
1
2
3
4
5

Sikl qanday ishladi? (Iteratsiyalar jadvali)

IteratsiyaO'zgaruvchiShart: i <= 5Amal
1-iteratsiyai = 1true1 chop etiladi. i qiymati 2 ga oshadi.
2-iteratsiyai = 2true2 chop etiladi. i qiymati 3 ga oshadi.
3-iteratsiyai = 3true3 chop etiladi. i qiymati 4 ga oshadi.
4-iteratsiyai = 4true4 chop etiladi. i qiymati 5 ga oshadi.
5-iteratsiyai = 5true5 chop etiladi. i qiymati 6 ga oshadi.
6-iteratsiyai = 6falseShart bajarilmadi, sikl yakunlanadi.

3. 2-misol: Natural sonlar yig'indisini hisoblash

1 dan n gacha bo'lgan sonlar yig'indisini (1 + 2 + 3 + ... + n) hisoblaymiz:

example.go
package main

import "fmt"

func main() {
    var n, sum = 10, 0

    for i := 1; i <= n; i++ {
        sum += i // sum = sum + i
    }

    fmt.Println("Yig'indi (sum) =", sum)
}

Natija:

kod
Yig'indi (sum) = 55

4. for va range: Kolleksiyalarni aylanib chiqish

Go tilida massiv (array) yoki slays (slice) elementlarini aylanib chiqish uchun range operatori bilan birga for dan foydalaniladi:

example.go
package main

import "fmt"

func main() {
    numbers := [5]int{11, 22, 33, 44, 55}

    for index, value := range numbers {
        fmt.Printf("%d-indeksdagi element: %d\n", index, value)
    }
}

Natija:

kod
0-indeksdagi element: 11
1-indeksdagi element: 22
2-indeksdagi element: 33
3-indeksdagi element: 44
4-indeksdagi element: 55

Bo'sh identifikator (_) dan foydalanish

Agar bizga massivning indeksi kerak bo'lmasa, uni bo'sh identifikator _ bilan almashtirishimiz kerak, aks holda Go kompilyatori foydalanilmagan o'zgaruvchi uchun xatolik beradi:

example.go
package main

import "fmt"

func main() {
    numbers := [5]int{11, 22, 33, 44, 55}

    // index kerak emas, shuning uchun _ qo'yamiz
    for _, value := range numbers {
        fmt.Println(value)
    }
}

5. Goda while sikli ko'rinishida foydalanish

Go tilida alohida while kalit so'zi yo'q. Agar for ga faqat bitta shart yozilsa, u boshqa tillardagi while kabi ishlaydi:

example.go
package main

import "fmt"

func main() {
    i := 1

    // while sharti kabi ishlaydi
    for i <= 3 {
        fmt.Println("Qiymat:", i)
        i++
    }
}

Natija:

kod
Qiymat: 1
Qiymat: 2
Qiymat: 3

6. Cheksiz sikl (Infinite Loop)

Agar for dan keyin hech qanday boshlanish, shart va o'zgarish yozilmasa, cheksiz sikl hosil bo'ladi:

example.go
package main

import "fmt"

func main() {
    for {
        fmt.Println("Bu xabar cheksiz takrorlanadi...")
        // Siklni to'xtatish uchun ichida break ishlatiladi
        break
    }
}

Cheksiz sikllardan server dasturlarida, foydalanuvchi buyruqlarini doimiy kutishda va fon jarayonlarini yuritishda keng foydalaniladi.