2016-04-29 28 views
6

時,當嘗試使用STRCONV上通過URL傳遞變量(GET變量命名倍)拋出錯誤,GoLang上編譯載明下列失敗:strconv.Atoi()給出一個字符串

多值STRCONV .Atoi()在單值上下文

然而,當我做reflect.TypeOf我得到string類型,這在我的理解是正確的參數的類型。

我一直在試圖解決這個問題幾個小時。我是新來的,對這個問題感到非常沮喪。我終於決定尋求幫助。對於任何反饋,我們都表示感謝。

func numbers(w http.ResponseWriter, req *http.Request) { 
    fmt.Println("GET params were:", req.URL.Query()); 
    times := req.URL.Query()["times"][0] 
    time := strconv.Atoi(times) 

    reflect.TypeOf(req.URL.Query()["times"][0]) // returns string 
} 

回答

25

錯誤是告訴你,從strconv.Atoiinterror)兩個返回值的單一值上下文(分配time)被使用。將代碼更改爲:

time, err := strconv.Atoi(times) 
    if err != nil { 
     // handle error 
    } 
+0

感謝此問題已修復此問題。這很奇怪,函數可以在Go中返回多個類型的值。這與訂單時間和錯誤在哪裏有關係嗎? –

+3

@deadbeef:多重回報是該語言的基本功能之一。我會建議至少通過[Tour of Go](https://tour.golang.org/)來了解語言是如何工作的 – JimB

相關問題