For Loops

...

SU

Go For Loops

for sikli kod blokini belgilangan marta aylantirib bajaradi.

for sikli Go dasturlash tilida mavjud bo'lgan yagona sikldir.

Go for Sikli

Sikllar bir xil kodni takroran bajarish uchun foydalidir, har safar turli qiymat bilan.

Har bir sikl bajarilishi iteratsiya deb ataladi.

for sikli uchta bayonotni qabul qilishi mumkin:

Sintaksis

for statement1; statement2; statement3 {
   // har bir iteratsiya uchun bajariladigan kod
}
  • statement1 Sikl hisoblagich qiymatini initsializatsiya qiladi.
  • statement2 Har bir sikl iteratsiyasi uchun baholanadi. Agar TRUE bo'lsa, sikl davom etadi. Agar FALSE bo'lsa, sikl tugaydi.
  • statement3 Sikl hisoblagich qiymatini oshiradi.

Eslatma: Ushbu bayonotlar sikl argumentlari sifatida mavjud bo'lishi shart emas. Ammo ular kodda qandaydir shaklda mavjud bo'lishi kerak.

for Sikli Misollari

Misol 1

Quyidagi misol 0 dan 4 gacha bo'lgan raqamlarni chop etadi:

package main
import ("fmt")
 
func main() {
  for i := 0; i < 5; i++ {
    fmt.Println(i)
  }
}

Natija:

0
1
2
3
4

Misol 1 tushuntirilishi

  • i := 0; - Sikl hisoblagichini (i) initsializatsiya qiladi va boshlang'ich qiymatni 0 ga o'rnatadi.
  • i < 5; - Siklni i 5 dan kichik bo'lsa davom ettiradi.
  • i++ - Har bir iteratsiya uchun sikl hisoblagich qiymatini 1 ga oshiradi.

Misol 2

Quyidagi misol 100 ga 10 ga oshirib hisoblaydi:

package main
import ("fmt")
 
func main() {
  for i := 0; i <= 100; i += 10 {
    fmt.Println(i)
  }
}

Natija:

0
10
20
30
40
50
60
70
80
90
100

Misol 2 tushuntirilishi

  • i := 0; - Sikl hisoblagichini (i) initsializatsiya qiladi va boshlang'ich qiymatni 0 ga o'rnatadi.
  • i <= 100; - Siklni i 100 ga teng yoki undan kichik bo'lsa davom ettiradi.
  • i += 10 - Har bir iteratsiya uchun sikl hisoblagich qiymatini 10 ga oshiradi.

continue Bayonoti

continue bayonoti bir yoki bir nechta iteratsiyalarni o'tkazib yuboradi. Keyin siklni keyingi iteratsiya bilan davom ettiradi.

Misol

Quyidagi misol 3 qiymatini o'tkazib yuboradi:

package main
import ("fmt")
 
func main() {
  for i := 0; i < 5; i++ {
    if i == 3 {
      continue
    }
   fmt.Println(i)
  }
}

Natija:

0
1
2
4

break Bayonoti

break bayonoti sikl bajarilishini to'xtatadi yoki tugatadi.

Misol

Quyidagi misol i 3 ga teng bo'lganda sikldan chiqadi:

package main
import ("fmt")
 
func main() {
  for i := 0; i < 5; i++ {
    if i == 3 {
      break
    }
   fmt.Println(i)
  }
}

Natija:

0
1
2

Eslatma

continue va break odatda shartlar bilan birga ishlatiladi.

Nested Loops

Bitta siklni boshqa sikl ichiga joylashtirish mumkin.

Bu yerda "ichki sikl" har bir "tashqi sikl" iteratsiyasi uchun bir marta bajariladi:

Misol

package main
import ("fmt")
 
func main() {
  adj := [2]string{"big", "tasty"}
  fruits := [3]string{"apple", "orange", "banana"}
  for i := 0; i < len(adj); i++ {
    for j := 0; j < len(fruits); j++ {
      fmt.Println(adj[i], fruits[j])
    }
  }
}

Natija:

big apple
big orange
big banana
tasty apple
tasty orange
tasty banana

range Kalit So'zi

range kalit so'zi massiv, kesishma yoki xarita elementlari orqali osonroq iteratsiya qilish uchun ishlatiladi. U indeks va qiymatni qaytaradi.

range kalit so'zidan foydalanish:

Sintaksis

for index, value := range array|slice|map {
   // har bir iteratsiya uchun bajariladigan kod
}

Misol

Quyidagi misol range yordamida massivni iteratsiya qilib, har bir indeks va qiymatni chop etadi (idx indeksni saqlaydi, val qiymatni saqlaydi):

package main
import ("fmt")
 
func main() {
  fruits := [3]string{"apple", "orange", "banana"}
  for idx, val := range fruits {
     fmt.Printf("%v\t%v\n", idx, val)
  }
}

Natija:

0      apple
1      orange
2      banana

Tip: Faqat qiymat yoki indeksni ko'rsatish uchun, boshqa chiqishni pastga olib tashlash mumkin (_ ishlatib).

Misol

Bu yerda indekslarni (idx) o'tkazib yuboramiz (idx indeksni saqlaydi, val qiymatni saqlaydi):

package main
import ("fmt")
 
func main() {
  fruits := [3]string{"apple", "orange", "banana"}
  for _, val := range fruits {
     fmt.Printf("%v\n", val)
  }
}

Natija:

apple
orange
banana

Misol

Bu yerda qiymatlarni (val) o'tkazib yuboramiz (idx indeksni saqlaydi, val qiymatni saqlaydi):

package main
import ("fmt")
 
func main() {
  fruits := [3]string{"apple", "orange", "banana"}
 
  for idx, _ := range fruits {
     fmt.Printf("%v\n", idx)
  }
}

Natija:

0
1
2

Ushbu sahifada

GitHubda tahrirlash