To'plamlarni aylanib chiqish
Go dasturlash tilida range operatori for sikli bilan birgalikda massivlar (array), slayslar (slice), satrlar (string) va map to'plamlari elementlarini birma-bir aylanib chiqish (iteratsiya qilish) uchun ishlatiladi.
Massiv elementlarini aylanib chiqishda range har bir iteratsiyada ikkita qiymat qaytaradi:
0, 1, 2...)package main
import "fmt"
func main() {
numbers := [5]int{21, 24, 27, 30, 33}
// range yordamida massivni aylanamiz
for index, item := range numbers {
fmt.Printf("numbers[%d] = %d\n", index, item)
}
}
Natija:
numbers[0] = 21
numbers[1] = 24
numbers[2] = 27
numbers[3] = 30
numbers[4] = 33
[!TIP] Agar indeks kerak bo'lmasa, uni bo'sh identifikator
_bilan almashtirish mumkin:example.gofor _, item := range numbers { fmt.Println(item) }
Satr (string) ustida range ishlatilganda, u har bir belgining indeksi va uning Unicode kodi (rune) qiymatini qaytaradi:
package main
import "fmt"
func main() {
message := "Golang"
fmt.Println("Indeks: Belgi")
for i, char := range message {
// %c formati butun sonni belgiga aylantirib chiqaradi
fmt.Printf("%d: %c\n", i, char)
}
}
Natija:
Indeks: Belgi
0: G
1: o
2: l
3: a
4: n
5: g
Map to'plamlari bilan ishlaganda, range har bir aylanishda kalit (key) va unga mos qiymat (value) juftligini qaytaradi:
package main
import "fmt"
func main() {
subjectMarks := map[string]float32{
"Java": 80,
"Python": 81,
"Golang": 85,
}
fmt.Println("To'plangan ballar:")
for subject, marks := range subjectMarks {
fmt.Printf("%s: %g\n", subject, marks)
}
}
Natija:
To'plangan ballar:
Java: 80
Python: 81
Golang: 85
| Iteratsiya | Fan (Kalit / Key) | Baho (Qiymat / Value) |
|---|---|---|
| 1-iteratsiya | Java | 80 |
| 2-iteratsiya | Python | 81 |
| 3-iteratsiya | Golang | 85 |
Faqat kalitlar kerak bo'lganda, ikkinchi o'zgaruvchini yozmaslik kifoya:
package main
import "fmt"
func main() {
subjectMarks := map[string]float32{
"Java": 80,
"Python": 81,
"Golang": 85,
}
fmt.Println("Fanlar ro'yxati:")
for subject := range subjectMarks {
fmt.Println(subject)
}
}
Natija:
Fanlar ro'yxati:
Java
Python
Golang
Faqat qiymatlar kerak bo'lganda esa, birinchi parametr o'rniga _ qo'yiladi:
for _, mark := range subjectMarks {
fmt.Println(mark)
}