Read and Write
O'qish va yozish
servers := []string{"web-1", "web-2", "web-3"}
fmt.Println(servers[0]) // web-1
fmt.Println(servers[2]) // web-3Slicedagi har bir elementning indeksi bor, u 0 dan boshlanadi. i pozitsiyasidagi elementni o'qish uchun slice[i] dan foydalaning.
Elementlarni xuddi shunday yangilashingiz ham mumkin:
servers[1] = "web-backup"
fmt.Println(servers) // [web-1 web-backup web-3]Oxirgi to'g'ri indeks har doim len(slice) - 1` ga teng. Shu diapazondan tashqaridagi indeksga murojaat qilish dasturingizni "index out of range" xatosi bilan qulatadi.
>_ Exercise
Sizda server holatlari slice'i bor: "healthy", "healthy", "degraded"
Berilgan indeksdagi holatni yangilaydigan RotateStatus(statuses []string, index int, newStatus string) funksiyasini yozing.
Funksiya slicani joyida (in place) o'zgartiradi (qaytish qiymati kerak emas).
Misollar:
Oldin: ["healthy", "healthy", "degraded"]
RotateStatus(statuses, 2, "healthy")
Keyin: ["healthy", "healthy", "healthy"]
Oldin: ["healthy", "healthy", "healthy"]
RotateStatus(statuses, 0, "down")
Keyin: ["down", "healthy", "healthy"]Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
slice[i] — i pozitsiyasidagi elementni o'qiydi yoki yozadi. Indekslar 0 dan boshlanadi, oxirgisi esa len(slice) - 1 ga teng.
NEXT UP
Growing a Slice
$ go run main.go
Kodingizni ishga tushiring