Go 使用DNSutil | type dns.RR从域中提取名称服务器没有字段或方法Hdr
我正在尝试使用GoLang从DNS记录中提取名称服务器。我遇到的问题是无法从结构读取字段 我将响应转换为JSON,以便“读取”它包含的字段,为此我使用以下代码:Go 使用DNSutil | type dns.RR从域中提取名称服务器没有字段或方法Hdr,go,dns,Go,Dns,我正在尝试使用GoLang从DNS记录中提取名称服务器。我遇到的问题是无法从结构读取字段 我将响应转换为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."} 现在,
json, _ := json.Marshal(ns)
fmt.Println(string(json))
这将打印出:
{"Hdr":{"Name":"example.com.","Rrtype":2,"Class":1,"Ttl":172800,"Rdlength":16},"Ns":"ns2.example.eu."}
现在,当我尝试从该字符串中读取并打印名称值时,请使用:
fmt.Println(ns.Hdr.Name)
我得到以下错误:
./main.go:19:18: ns.Hdr undefined (type dns.RR has no field or method Hdr)
谁能帮我从Ns(Struct?)中提取名称(example.com.)
我本以为这会打印出“example.com”,但我却得到了一个错误
谢谢 为避免编译错误,请将Hdr更改为Header()
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)
}
}
}
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.Header().Name)
}
}
}