Dig Output
Dig natijasi
dig — DNS so'rovlarini qo'lda yuborish uchun ishlatiladigan mashhur buyruq qatori vositasi. Uning natijasi qat'iy, tabulyatsiya (tab) bilan ajratilgan formatga ega, va bu format shunchalik keng tarqalganki, ko'plab boshqa DNS vositalari ham aynan shu ko'rinishda natija chiqaradi:
example.com. 3600 IN A 93.184.216.34Beshta ustun bor: domen nomi (oxirida nuqta bilan — bu domenning "to'liq malakali" (fully qualified) ekanini bildiradi), TTL, sinf (deyarli har doim IN, ya'ni Internet), tur, va qiymat. Ular orasidagi bo'shliq — aynan tab belgisi (\t), bo'sh joy emas.
Bu — Format Like a Pro darsida ko'rgan fmt.Sprintfning to'g'ridan-to'g'ri qo'llanilishi. Yagona farq: %s va %d orasidagi ajratuvchi endi bo'sh joy emas, \t.
fmt.Sprintf("%s.\t%d\tIN\t%s\t%s", r.Name, r.TTL, r.Type, r.Value)
// "example.com.\t3600\tIN\tA\t93.184.216.34"Kursning boshida DNSRecordni yaratdingiz. Endi uni chiroyli, tanish formatda chop etishga qodirsiz — bu sizning resolveringizni haqiqiy DNS vositalari singari ko'rinishga keltiradi.
>_ Exercise
Yozuvni bitta dig-uslubidagi qatorga formatlaydigan FormatDigLine(r DNSRecord) string funksiyasini yozing.
Format: "<name>.\t<ttl>\tIN\t<type>\t<value>" — nomdan keyin nuqta, so'ng har bir maydon orasida tab belgisi.
Misol:
- •
FormatDigLine(DNSRecord{Name: "example.com", Type: "A", Value: "93.184.216.34", TTL: 3600})"example.com.\t3600\tIN\tA\t93.184.216.34"qaytaradi
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
fmt.Sprintf istalgan chiqish formatini yasay oladi, jumladan tab bilan ajratilgan qatorlarni ham — shunchaki ajratuvchi sifatida bo'sh joy o'rniga \t ishlating. Kichik, aniq maqsadli funksiyalarni (DNSRecord, LookupRecord, DNSCache, ValidateRecord, ResolveCNAME, MergeZone, FormatDigLine) birlashtirib, siz haqiqiy DNS resolverining asosiy qismlarini qurdingiz.
$ go run main.go
Kodingizni ishga tushiring