用golang代理的变量替换字符串

时间:2016-02-22 19:01:08

标签: go

我试图在这里使用http代理

proxyUrl := url.Parse(strings.Replace("%v", RandomProxyAddress()))
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyUrl)}

告诉我url.Parse中的参数太多了

但是当我尝试

proxyUrl := url.Parse(RandomProxyAddress())
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyUrl)}

我得到./main.go:138: multiple-value url.Parse() in single-value context

当我尝试更换字符串时,它也告诉我太多的变量。不知道如何让我的代理使用url.Parse

1 个答案:

答案 0 :(得分:2)

首先,url.Parse根据docs here返回两个变量,一个URL和一个错误。

其次,代替strings.Replace你可能意味着使用fmt.Sprintf("%v", RandomProxyAddress()),假设RandomProxyAddress()返回一个字符串,或者格式化为你想要的字符串的东西。总而言之,你应该:

addr := fmt.Sprintf("%v", RandomProxyAddress())
proxyURL, err := url.Parse(addr)
if err != nil {
    log.Println(err)
}

也就是说,如果fmt.Sprintf已经返回一个字符串,则RandomProxyAddress()是不必要的。 Check the docs for fmt and fmt.Sprintf。如果您确实打算使用strings.Replace,请注意requires four arguments,而不是两个。