2016-04-29 10 views
6

Beim Versuch StrConv auf einer Variable über URL (GET Variable mit dem Namen mal) übergeben zu verwenden, schlägt fehl golang auf Kompilation unter Angabe des folgenden:strconv.Atoi() Fehler zu werfen, wenn eine Zeichenfolge gegeben

Mehrwert StrConv .Atoi() in einem einzigen Wert Kontext

Allerdings, wenn ich reflect.TypeOf bekomme ich String als Typ, der zu meinem Verständnis die richtige Art der Argumentation ist.

Ich habe versucht, dieses Problem für mehrere Stunden zu beheben. Ich bin neu zu gehen und bin ziemlich frustriert von diesem Problem geworden. Ich beschloss schließlich, um Hilfe zu bitten. Jede Rückmeldung wäre willkommen.

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 
} 

Antwort

25

Der Fehler wird Ihnen sagen, dass die beiden Rückgabewerte von strconv.Atoi (int und error) in einem einzigen Wertekontext verwendet werden (die Zuordnung zu time). Ändern Sie den Code in:

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

Dank dieser behoben das Problem. Es ist ziemlich seltsam, dass Funktionen in Go though mehr als einen Werttyp zurückgeben können. Ist es wichtig, in welcher Reihenfolge sich die Zeit und der Fehler befinden? –

+3

@deadbeef: Mehrfachrückläufe gehören zu den Grundfunktionen der Sprache. Ich würde vorschlagen, zumindest die [Tour of Go] (https://tour.golang.org/) durchzugehen, um eine Vorstellung davon zu bekommen, wie die Sprache funktioniert – JimB