英文:
Replace string with variable for golang proxy
问题
我正在尝试使用这里的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一起工作。
英文:
I'm trying to use the http proxy code here
proxyUrl := url.Parse(strings.Replace("%v", RandomProxyAddress()))
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyUrl)}
Tells me there are too many arguments in the url.Parse
But when I try
proxyUrl := url.Parse(RandomProxyAddress())
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyUrl)}
I get ./main.go:138: multiple-value url.Parse() in single-value context
When I tried a string replace it also tells me too many varibles. Not sure how to get my proxy to work with the url.Parse
答案1
得分: 2
首先,url.Parse函数返回两个变量,一个是URL,另一个是错误。根据这里的文档。
其次,你可能想使用fmt.Sprintf("%v", RandomProxyAddress()),而不是strings.Replace,假设RandomProxyAddress()返回一个字符串,或者返回一个可以格式化成你想要的字符串的内容。所以总的来说,你应该有以下代码:
addr := fmt.Sprintf("%v", RandomProxyAddress())
proxyURL, err := url.Parse(addr)
if err != nil {
    log.Println(err)
}
话虽如此,如果RandomProxyAddress()已经返回一个字符串,那么fmt.Sprintf就是不必要的。可以查看fmt和fmt.Sprintf的文档。如果你确实想使用strings.Replace,请注意它需要四个参数,而不是两个。
英文:
Firstly, url.Parse returns two variables, a URL and an error, as per the docs here.
Secondly, instead of strings.Replace you probably meant to use fmt.Sprintf("%v", RandomProxyAddress()), assuming RandomProxyAddress() returns a string, or something that formats into the string you want. So all in all, you should have:
addr := fmt.Sprintf("%v", RandomProxyAddress())
proxyURL, err := url.Parse(addr)
if err != nil {
    log.Println(err)
}
That said, the fmt.Sprintf would be unnecessary if RandomProxyAddress() already returns a string. Check the docs for fmt and fmt.Sprintf. And if you really did mean to use strings.Replace, notice that it requires four arguments, not two.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论