Growing a Slice
Slicani kengaytirish
endpoints := []string{"/api/users"}
endpoints = append(endpoints, "/api/orders")
fmt.Println(endpoints) // [/api/users /api/orders]append funksiyasi — slicelarning o'sish usuli. U slice va bitta yoki bir nechta qiymatni qabul qiladi, so'ng o'sha qiymatlar qo'shilgan yangi slicani qaytaradi. Muhim qoida: natijani doim qaytadan belgilang.
append(endpoints, "/api/orders") // xato: natija tashlab yuboriladi
endpoints = append(endpoints, "/api/orders") // to'g'ri: endpoints endi uni o'z ichiga oladiNega? append asl slicani o'zgartirmaydi. U qo'shimcha element bilan yangisini yaratadi va uni qaytaradi. Agar qaytish qiymatini ushlamasangiz, yangi slice yo'qoladi.
Bir vaqtda bir nechta qiymat ham qo'shishingiz mumkin:
endpoints = append(endpoints, "/api/products", "/api/health")>_ Exercise
Slicaga bitta ruxsatnoma qo'shib, yangilangan slicani qaytaradigan AddPermission(permissions []string, permission string) []string funksiyasini yozing.
Misollar:
AddPermission(["read"], "write") → ["read", "write"]
AddPermission([], "admin") → ["admin"]
AddPermission(["read", "write"], "delete") → ["read", "write", "delete"]Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
append natijasini doim qaytadan belgilang: s = append(s, val). Asl slice hech qachon joyida o'zgartirilmaydi.
NEXT UP
Walking the List
$ go run main.go
Kodingizni ishga tushiring