Project: Setting a Flag
Loyiha: Flag o'rnatish
Yakuniy loyihaning ikkinchi qismi. O'tgan darsda Flag va Storeni modellashtirdingiz. Endi birinchi metod: Set. U flagni yoqadi yoki o'chiradi, va uni birinchi marta nomlaganingizda yaratadi:
store.Set("new-checkout", false) // yaratildi, o'chiq
store.Set("new-checkout", true) // xuddi shu flag, endi yoniqReceiver qarori
Set ikkita ishdan birini qiladi:
- •Allaqachon mavjud flagni tahrirlash.
- •Butunlay yangisini
appendqilish.
Append qilish receiverni hal qiladigan holat, chunki flag qo'shish store'ning ro'yxatini kengaytiradi, bu esa Storening o'zini o'zgartiradi.
Value receiver Setga store'ning nusxasini beradi, shuning uchun yangi flag nusxaga tushadi va Set qaytganda yo'qoladi. Pointer receiver esa Setga haqiqiy store'ni beradi, shuning uchun yangi flag qoladi.
>_ Exercise
Setni *Store ustida metod sifatida yozing. Flag va Store turlari allaqachon berilgan.
Metod
func (s *Store) Set(name string, enabled bool)Talablar
- •Shu
namega ega flag allaqachon mavjud bo'lsa, uningEnabledmaydonini joyida yangilang - •Hech qanday flag mos kelmasa, shu
namevaenabledbilan yangiFlagqo'shing (append) - •Mavjud nomni qayta o'rnatish dublikat yaratmasligi kerak
- •Append chaqiruvdan keyin ham qolishi uchun pointer receiverdan foydalaning
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Value receiver tub massivni ulashadi, shuning uchun joyidagi tahrir saqlanadi, lekin append yo'qoladi; append qilishi mumkin bo'lgan har qanday o'zgartiruvchiga pointer receiver kerak.
NEXT UP
Project: Feature Flag Lookup
$ go run main.go
Kodingizni ishga tushiring