Pipeline
Pipeline
Sizda endi to'rtta mustaqil funksiya bor: ParseYAML, TransformRows, GroupByCategory, va ComputeStats. Har biri bitta ishni qiladi va o'zidan oldingi bosqichning natijasini kutadi. Bu — Go Basics kursidagi toSlug darsida ko'rgan kompozitsiya g'oyasining aynan o'zi, faqat endi to'rtta bosqichli katta miqyosda: kichik, aniq maqsadli funksiyalarni birlashtirib, Pipeline yasang.
func RunPipeline(input string) (map[string]CategoryStats, error) {
rows := ParseYAML(input)
products, err := TransformRows(rows)
if err != nil {
return nil, err
}
groups := GroupByCategory(products)
return ComputeStats(groups), nil
}E'tibor bering: ParseYAML xato qaytarmaydi (u shunchaki bo'sh qatorlarni e'tiborsiz qoldiradi), lekin TransformRows qaytarishi mumkin (narx noto'g'ri bo'lsa). Pipeline shu yerda erta chiqish qiladi: agar transformatsiya muvaffaqiyatsiz bo'lsa, guruhlash yoki hisoblashga umuman urinib ko'rilmaydi — xato darhol yuqoriga uzatiladi.
Bu andaza — nega Go'da funksiyalar odatda kichik va bitta ishga yo'naltirilgan bo'lishini ko'rsatadi: har bir bosqichni alohida sinash, tushunish va, kerak bo'lsa, almashtirish oson. RunPipelinening o'zi esa faqat tartibni tasvirlaydi — u hech qanday tahlil, transformatsiya yoki hisoblash mantig'ini o'z ichiga olmaydi.
>_ Exercise
Kirish satridan yakuniy statistikagacha bo'lgan to'rtta bosqichni birlashtiradigan RunPipeline(input string) (map[string]CategoryStats, error) funksiyasini yozing. ParseYAML, TransformRows, GroupByCategory, va ComputeStats sizga allaqachon berilgan.
Talablar
- •
inputniParseYAMLbilan tahlil qiling - •Natijani
TransformRowsbilan o'zgartiring; xato bo'lsa, darholnilva o'sha xatoni qaytaring - •Mahsulotlarni
GroupByCategorybilan guruhlang - •
ComputeStatsnatijasininilxato bilan qaytaring
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Pipeline — bosqichlarni tartib bilan chaqiradigan va birinchi xatoda erta chiqadigan yupqa orkestrator funksiya. Har bir bosqich kichik va mustaqil qolgani uchun, Pipeline'ning o'zi o'qish va ishonch bilan o'zgartirish oson bo'lib qoladi.
NEXT UP
Pipeline Report
$ go run main.go
Kodingizni ishga tushiring