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 tillardagiwhilevado-whilesikllari ham Goda aynanforoperatori yordamida amalga oshiriladi.
Go tilida klassik for siklining sintaksisi quyidagicha:
for boshlanish; shart; o'zgarish {
// takrorlanadigan kod bloki
}
Bu yerda:
true bo'lsa, sikl tanasi bajariladi; agar false bo'lsa, sikl to'xtaydi.i++).
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:
1
2
3
4
5
| Iteratsiya | O'zgaruvchi | Shart: i <= 5 | Amal |
|---|---|---|---|
| 1-iteratsiya | i = 1 | true | 1 chop etiladi. i qiymati 2 ga oshadi. |
| 2-iteratsiya | i = 2 | true | 2 chop etiladi. i qiymati 3 ga oshadi. |
| 3-iteratsiya | i = 3 | true | 3 chop etiladi. i qiymati 4 ga oshadi. |
| 4-iteratsiya | i = 4 | true | 4 chop etiladi. i qiymati 5 ga oshadi. |
| 5-iteratsiya | i = 5 | true | 5 chop etiladi. i qiymati 6 ga oshadi. |
| 6-iteratsiya | i = 6 | false | Shart bajarilmadi, sikl yakunlanadi. |
1 dan n gacha bo'lgan sonlar yig'indisini (1 + 2 + 3 + ... + n) hisoblaymiz:
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:
Yig'indi (sum) = 55
Go tilida massiv (array) yoki slays (slice) elementlarini aylanib chiqish uchun range operatori bilan birga for dan foydalaniladi:
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:
0-indeksdagi element: 11
1-indeksdagi element: 22
2-indeksdagi element: 33
3-indeksdagi element: 44
4-indeksdagi element: 55
_) dan foydalanishAgar bizga massivning indeksi kerak bo'lmasa, uni bo'sh identifikator _ bilan almashtirishimiz kerak, aks holda Go kompilyatori foydalanilmagan o'zgaruvchi uchun xatolik beradi:
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)
}
}
Go tilida alohida while kalit so'zi yo'q. Agar for ga faqat bitta shart yozilsa, u boshqa tillardagi while kabi ishlaydi:
package main
import "fmt"
func main() {
i := 1
// while sharti kabi ishlaydi
for i <= 3 {
fmt.Println("Qiymat:", i)
i++
}
}
Natija:
Qiymat: 1
Qiymat: 2
Qiymat: 3
Agar for dan keyin hech qanday boshlanish, shart va o'zgarish yozilmasa, cheksiz sikl hosil bo'ladi:
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.