Я пытаюсь извлечь серверы имен из записи DNS, используя GoLang. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу прочитать поля из структуры.
Я превращаю Response в JSON, чтобы я мог «прочитать», какие поля у него есть, для этого я использую следующий код:
json, _ := json.Marshal(ns)
fmt.Println(string(json))
Это распечатывает:
{"Hdr":{"Name":"example.com.","Rrtype":2,"Class":1,"Ttl":172800,"Rdlength":16},"Ns":"ns2.example.eu."}
Теперь, когда я пытаюсь прочитать, напечатайте значение Name из этой строки, используя:
fmt.Println(ns.Hdr.Name)
Я получаю следующую ошибку:
./main.go:19:18: ns.Hdr undefined (type dns.RR has no field or method Hdr)
Может ли кто-нибудь помочь мне извлечь Имя (example.com.) Из Ns (Struct?).
package main
import (
"encoding/json"
"fmt"
"github.com/lixiangzhong/dnsutil"
)
func main() {
var dig dnsutil.Dig
dig.SetDNS("8.8.4.4")
res, _ := dig.Trace("example.com.")
for _, nameservers := range res {
for _, ns := range nameservers.Msg.Ns {
json, _ := json.Marshal(ns)
fmt.Println(string(json))
fmt.Println(ns.Hdr.Name)
}
}
}
Я ожидал, что это распечатает "example.com". но вместо этого я получаю ошибку.
Спасибо!