我有以下代码。我收到此错误:
testdl.go:17: 不能在字段值中使用 q(类型 net.IP)作为类型 net.Addr: net.IP 没有实现 net.Addr(缺少网络方法)
知道如何将硬编码 IP 放入 LocalAddr 吗?
package main
import (
"fmt"
"net"
"net/http"
)
var url = "http://URL/api.xml"
func main() {
q := net.ParseIP("192.168.0.1")
var transport = &http.Transport{
Dial: (&net.Dialer{
LocalAddr: q,
}).Dial,
}
var httpclient = &http.Client{
Transport: transport,
}
response, err := httpclient.Get(url)
fmt.Println(response)
}
最佳答案
根据文档,IP
类型确实没有实现Addr
。但是,IPAddr
类型会:
type IPAddr struct {
IP IP
Zone string // IPv6 scoped addressing zone
}
因此,您的代码变为:
q := net.ParseIP("192.168.0.1")
addr := &net.IPAddr{q,""}
var transport = &http.Transport{
Dial: (&net.Dialer{
LocalAddr: addr,
}).Dial,
}
关于go - net.IP 没有实现 net.Addr(缺少网络方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40425479/