Go sikllar
for sikli kod blokini belgilangan marta takror bajaradi.
for sikli Go tilidagi yagona sikl turidir.
Go for sikli
Sikllar bir xil kodni har safar boshqa qiymat bilan qayta-qayta bajarish kerak bo‘lganda qulay.
Siklning har bir bajarilishi iteratsiya deb ataladi.
for sikli uchtagacha ko‘rsatma qabul qilishi mumkin:
Sintaksis
for statement1; statement2; statement3 {
// code to be executed for each iteration
}
statement1 Sikl hisoblagichining boshlang‘ich qiymatini belgilaydi.
statement2 Har bir iteratsiyada hisoblanadi. Agar natija TRUE bo‘lsa, sikl davom etadi. Agar FALSE bo‘lsa, sikl tugaydi.
statement3 Sikl hisoblagichi qiymatini oshiradi.
Eslatma: Bu ko‘rsatmalar sikl argumentlari sifatida yozilishi shart emas. Biroq ular kodda qandaydir shaklda mavjud bo‘lishi kerak.
for sikliga misollar
1-misol
Ushbu misol 0 dan 4 gacha bo‘lgan sonlarni chiqaradi:
package main
import "fmt"
func main() {
for i:=0; i < 5; i++ {
fmt.Println(i)
}
}
Natija:
0
1
2
3
4
1-misol izohi
- i:=0; - Sikl hisoblagichini (i) initsializatsiya qiladi va boshlang‘ich qiymatini 0 ga tenglaydi
- i < 5; - i 5 dan kichik ekan, sikl davom etadi
- i++ - Har bir iteratsiyada sikl hisoblagichi qiymatini 1 ga oshiradi
2-misol
Ushbu misol 100 gacha o‘ntadan sanaydi:
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
2-misol izohi
- i:=0; - Sikl hisoblagichini (i) initsializatsiya qiladi va boshlang‘ich qiymatini 0 ga tenglaydi
- i <= 100; - i 100 dan kichik yoki unga teng ekan, sikl davom etadi
- i+=10 - Har bir iteratsiyada sikl hisoblagichi qiymatini 10 ga oshiradi
continue operatori
continue operatori sikldagi bir yoki bir nechta iteratsiyani o‘tkazib yuborish uchun ishlatiladi. Shundan so‘ng sikl keyingi iteratsiyadan davom etadi.
Misol
Ushbu misolda 3 qiymati o‘tkazib yuboriladi:
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 operatori
break operatori sikl bajarilishini to‘xtatish/tugatish uchun ishlatiladi.
Misol
Ushbu misolda i 3 ga teng bo‘lganda sikldan chiqiladi:
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.
Ichma-ich sikllar
Bir siklni boshqa sikl ichiga joylashtirish mumkin.
Bu yerda "ichki sikl" "tashqi sikl"ning har bir 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, slice yoki map elementlarini osonroq aylanib chiqish (iteratsiya qilish) uchun ishlatiladi. U indeksni ham, qiymatni ham qaytaradi.
range kalit so‘zi quyidagicha ishlatiladi:
Sintaksis
for index, value := range array|slice|map {
// code to be executed for each iteration
}
Misol
Ushbu misolda massivni aylanib chiqish va har bir elementning indeksi hamda qiymatini chiqarish uchun range kalit so‘zidan foydalaniladi (idx indeksni, 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
Maslahat: Faqat qiymatni yoki faqat indeksni ko‘rsatish uchun ikkinchisini pastki chiziq (_) yordamida tashlab ketishingiz mumkin.
Misol
Bu yerda indekslarni tashlab ketmoqchimiz (idx indeksni, 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 tashlab ketmoqchimiz (idx indeksni, 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
Go mashqlari
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
