Putting It All Together
Hammasini birlashtirish
Kursning yakuniy darsi — hozirgacha alohida-alohida qurgan barcha qismlarni (fetching, link extraction, chuqurlik bilan cheklangan kezish, hisobot) bitta yaxlit Crawl funksiyasiga birlashtirish. Bu — butun "Go Fundamentals" yo'lining ruhini aks ettiradi: kichik, mustaqil, sinalgan qismlardan katta, ishonchli tizim qurish.
func Crawl(pages map[string]string, start string, maxDepth int) string {
// Depth Limiting darsidagi kezish mantig'i:
// ... queue, visited, FetchPage, ExtractLinks ...
// Crawl Results darsidagi hisobot:
return GenerateReport(pages, crawled)
}E'tibor bering: Crawl o'zi deyarli hech qanday yangi mantiqqa ega emas — u faqat Tracking Visited URLs, Depth Limiting va Crawl Results darslarida allaqachon yozgan, sinovdan o'tgan funksiyalaringizni to'g'ri tartibda chaqiradi. Bu — YAML Data Pipeline kursidagi RunPipelinening eng katta ko'rinishi: kichik funksiyalarni birlashtirib, ular birgalikda qila olmaydigan darajadagi ishni bajarish.
>_ Exercise
Crawl(pages map[string]string, start string, maxDepth int) string funksiyasini yozing. U (Depth Limiting darsidagi kabi) job{url, depth} navbati bilan boshlang'ich URL'dan kezishni boshlaydi, ko'rilgan sahifalarni yig'adi, maxDepthdan oshmaydi, so'ngra yig'ilgan URL'lar ustida GenerateReportni chaqirib, natijani qaytaradi.
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Butun crawler — mustaqil, alohida sinalgan qismlarning (fetch, extract, track, limit, report) tartibli kompozitsiyasi. Har bir qism o'z ishini yaxshi bajarganda, ularni birlashtirish oddiy va ishonchli bo'ladi — bu butun ushbu roadmap davomida qurgan barcha loyihalaringizning umumiy saboqi.
$ go run main.go
Kodingizni ishga tushiring