2016-02-22 96 views
-3

我想在這裏使用的HTTP代理代碼可變替換字符串golang代理

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

+0

['strings.Replace'](https://golang.org/pkg/strings/#Replace)需要4個參數。您是否在尋找['fmt.Sprintf'](https://golang.org/pkg/fmt/#Sprintf)? – JimB

+0

是的,這是問題謝謝@JimB – nadermx

回答

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,而不是兩個。

+0

不太確定downvote是什麼。 –