Dig Output

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.text
example.com.	3600	IN	A	93.184.216.34

Beshta 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.

example.go
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.

Hints (0/3)

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.

Finish
OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.text
example.com.	3600	IN	A	93.184.216.34

Beshta 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.

example.go
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.

Hints (0/3)

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.