GoDasturchi
Project: Setting a Flag

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:

example.go
store.Set("new-checkout", false) // yaratildi, o'chiq
store.Set("new-checkout", true)  // xuddi shu flag, endi yoniq

Receiver qarori

Set ikkita ishdan birini qiladi:

  • Allaqachon mavjud flagni tahrirlash.
  • Butunlay yangisini append qilish.

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

example.go
func (s *Store) Set(name string, enabled bool)

Talablar

  • Shu namega ega flag allaqachon mavjud bo'lsa, uning Enabled maydonini joyida yangilang
  • Hech qanday flag mos kelmasa, shu name va enabled bilan yangi Flag qo'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.

Hints (0/4)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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:

example.go
store.Set("new-checkout", false) // yaratildi, o'chiq
store.Set("new-checkout", true)  // xuddi shu flag, endi yoniq

Receiver qarori

Set ikkita ishdan birini qiladi:

  • Allaqachon mavjud flagni tahrirlash.
  • Butunlay yangisini append qilish.

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

example.go
func (s *Store) Set(name string, enabled bool)

Talablar

  • Shu namega ega flag allaqachon mavjud bo'lsa, uning Enabled maydonini joyida yangilang
  • Hech qanday flag mos kelmasa, shu name va enabled bilan yangi Flag qo'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.

Hints (0/4)

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