Walking the List
Ro'yxat bo'ylab yurish
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/healthfor 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:
for _, ep := range endpoints {
fmt.Println(ep)
}Agar sizga faqat indeks kerak bo'lsa, ikkinchi o'zgaruvchini butunlay tashlab qo'ying:
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:
1. server started
2. request receivedBitta yozuv: FormatLogs([]string{"connection lost"}) "1. connection lost" qaytaradi
Bo'sh slice bo'sh satr "" qaytaradi.
Stuck? Reveal a hint to help you.
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
$ go run main.go
Kodingizni ishga tushiring