GoDasturchi
Walking the List

Walking the List

Ro'yxat bo'ylab yurish

example.go
endpoints := []string{"/api/users", "/api/orders", "/api/health"}
for i, ep := range endpoints {
	fmt.Printf("%d: %s\n", i, ep)
}
// 0: /api/users
// 1: /api/orders
// 2: /api/health

for i, v := range slice sikli — slice bo'ylab yurish usuli. Har bir iteratsiyada ikkita qiymat olasiz: indeks (i, 0 dan boshlanadi) va elementning nusxasi (v).

Agar sizga faqat qiymat kerak bo'lsa, indeksni e'tiborsiz qoldirish uchun _ dan foydalaning:

example.go
for _, ep := range endpoints {
	fmt.Println(ep)
}

Agar sizga faqat indeks kerak bo'lsa, ikkinchi o'zgaruvchini butunlay tashlab qo'ying:

example.go
for i := range endpoints {
	fmt.Println(i)
}

Slice elementlaridan satr yasash uchun, fmt.Sprintf butun sonni %d ga, satrni %s ga joylashtiradi, masalan fmt.Sprintf("%d. %s", i+1, log). Chetlariga e'tibor bering: \n` ni faqat indeks oxirgisi bo'lmaganda qo'shing, shunda oxirgi elementdan keyin ortiqcha yangi qator qolmaydi.

>_ Exercise

Raqamlangan log natijasini qaytaradigan FormatLogs(logs []string) string funksiyasining tanasini yozing.

Har bir log yozuvi o'z raqami, nuqta, bo'shliq va log xabaridan iborat qilib formatlanishi kerak. Oxirgisidan tashqari har bir yozuvdan keyin yangi qator (\n) qo'shing.

Masalan, FormatLogs([]string{"server started", "request received"}) quyidagini qaytaradi:

example.go
1. server started
2. request received

Bitta yozuv: FormatLogs([]string{"connection lost"}) "1. connection lost" qaytaradi

Bo'sh slice bo'sh satr "" qaytaradi.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

for i, v := range slice sizga indeks va har bir elementning nusxasini beradi. Indeksni e'tiborsiz qoldirish uchun _ dan, qiymatni e'tiborsiz qoldirish uchun ikkinchi o'zgaruvchini tashlab qo'yishdan foydalaning.

NEXT UP

Slice Surgery

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Walking the List

Ro'yxat bo'ylab yurish

example.go
endpoints := []string{"/api/users", "/api/orders", "/api/health"}
for i, ep := range endpoints {
	fmt.Printf("%d: %s\n", i, ep)
}
// 0: /api/users
// 1: /api/orders
// 2: /api/health

for i, v := range slice sikli — slice bo'ylab yurish usuli. Har bir iteratsiyada ikkita qiymat olasiz: indeks (i, 0 dan boshlanadi) va elementning nusxasi (v).

Agar sizga faqat qiymat kerak bo'lsa, indeksni e'tiborsiz qoldirish uchun _ dan foydalaning:

example.go
for _, ep := range endpoints {
	fmt.Println(ep)
}

Agar sizga faqat indeks kerak bo'lsa, ikkinchi o'zgaruvchini butunlay tashlab qo'ying:

example.go
for i := range endpoints {
	fmt.Println(i)
}

Slice elementlaridan satr yasash uchun, fmt.Sprintf butun sonni %d ga, satrni %s ga joylashtiradi, masalan fmt.Sprintf("%d. %s", i+1, log). Chetlariga e'tibor bering: \n` ni faqat indeks oxirgisi bo'lmaganda qo'shing, shunda oxirgi elementdan keyin ortiqcha yangi qator qolmaydi.

>_ Exercise

Raqamlangan log natijasini qaytaradigan FormatLogs(logs []string) string funksiyasining tanasini yozing.

Har bir log yozuvi o'z raqami, nuqta, bo'shliq va log xabaridan iborat qilib formatlanishi kerak. Oxirgisidan tashqari har bir yozuvdan keyin yangi qator (\n) qo'shing.

Masalan, FormatLogs([]string{"server started", "request received"}) quyidagini qaytaradi:

example.go
1. server started
2. request received

Bitta yozuv: FormatLogs([]string{"connection lost"}) "1. connection lost" qaytaradi

Bo'sh slice bo'sh satr "" qaytaradi.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

for i, v := range slice sizga indeks va har bir elementning nusxasini beradi. Indeksni e'tiborsiz qoldirish uchun _ dan, qiymatni e'tiborsiz qoldirish uchun ikkinchi o'zgaruvchini tashlab qo'yishdan foydalaning.

NEXT UP

Slice Surgery