2017-11-06 5 views
1

ich den folgenden Code haben:Mehrwert strconv.ParseInt() in Einzelwert Kontext

var i2 uint64; 
var err error; 
i2, err = uint64(strconv.ParseInt(scanner.Text(), 64, 64)); 

und erhielt ich den Fehler:

multiple-value strconv.ParseInt() in single-value context 

Nach allem fand ich im Internet , das bedeutet, dass ich die beiden von ParseInt zurückgegebenen Parameter ignoriere, aber ich verwende err. Ich weiß, dass der Fehler vielleicht sehr dumm ist, aber ich habe gerade begonnen Go zu lernen und das hat mich sehr verwirrt.

Antwort

5

Der Ausdruck uint64(...) ist eine Art conversion, und es kann nicht mehrere Argumente (Operanden), aber da strconv.ParseInt() 2 Rückgabewerte haben, sind Sie im Grunde beide Umstellung auf den Typ vorbei, die nicht gültig ist.

Statt dies tun:

i, err := strconv.ParseInt(scanner.Text(), 64, 64) 
// Check err 
i2 := uint64(i) 

Beachten Sie, dass die Basis nicht als 36 größer sein kann, so dass Sie auf jeden Fall eine Fehlermeldung erhalten, wie Sie 64 als Basis vorbei sind.

Oder verwenden strconv.ParseUint() die Sie einen uint Wert sofort zurückkehren wird:

i, err := strconv.ParseUint(scanner.Text(), 16, 64) 
// i is of type uint64, and ready to be used if err is nil 

(. Hier habe ich eine gültige, 16 Basis Verwenden Sie, was Sie zu haben.)

Auch damit verbundene Frage sehen + Antwort: Go: multiple value in single-value context

+0

Vielen Dank – Nisanio

1

multiple-value strconv.ParseInt() in single-value context

ParseInt Wert 2 Wert: integer und Irrtum. Sie können sie also nicht im Funktionsargument verwenden, wenn nur ein Wert zulässig ist. Sie können zuerst value und error dann verwenden value in den nächsten Operationen.

+0

Vielen Dank – Nisanio