Project: Generic Stack
Loyiha: generic Stack
Endi barcha qismlar joyida: generic struct'lar (Generic Structs darsi), ular ustidagi metodlar (Methods on Generic Types darsi), va nol qiymat andazasi (Zero Values darsi). Ularni birlashtirib, haqiqiy ma'lumot tuzilmasi — Stack (steк)ni quramiz: oxirgi kirgan birinchi chiqadi (LIFO) tartibida ishlaydigan tuzilma.
Stack — Pointers & Memory kursidagi feature-flag saqlagichga o'xshab, ichki holatini (items []T) pointer receiver orqali o'zgartiradigan struct bo'ladi. Pop metodi ikki qiymat qaytaradi — bu Errors Are Values va Zero Values darslaridagi "qiymat va uning haqiqiyligi" andazasining tabiiy yakuni: stack bo'sh bo'lsa, Pop panic qilish yoki noto'g'ri qiymat qaytarish o'rniga, buni chaqiruvchiga ok == false orqali ma'lum qiladi.
>_ Exercise
items []T maydoniga ega Stack[T any] struct'ini yozing. Uchta metod qo'shing: Push(v T) — elementni oxiriga qo'shadi; Pop() (T, bool) — oxirgi elementni olib tashlab qaytaradi (bo'sh bo'lsa, nol qiymat va false); Len() int — joriy elementlar sonini qaytaradi.
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Stack[T any] — generic struct, tur parametrli metodlar va nol qiymat andazasining barchasini birlashtirgan to'liq, qayta ishlatiladigan ma'lumot tuzilmasi. Bir marta yozib, uni Stack[int], Stack[string] yoki istalgan boshqa tur bilan, hech qanday kod nusxalamasdan ishlatishingiz mumkin.
$ go run main.go
Kodingizni ishga tushiring