Go 使用DNSutil | type dns.RR从域中提取名称服务器没有字段或方法Hdr

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."} 现在,

我正在尝试使用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."}
现在,当我尝试从该字符串中读取并打印名称值时,请使用:

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)
        }
    }
}