Ich versuche, String in Ganzzahl in go-lang zu analysieren. Das Problem, das ich damit gefunden habe, ist in der Dokumentation seine erwähnte Syntax ist wie folgt:
%Vor% Dabei ist s
die zu analysierende Zeichenfolge, base
wird durch das Präfix der Zeichenfolge impliziert: Basis 16 für "0x", Basis 8 für "0" und andernfalls Basis 10.
Der bitSize
Parameter ist, wo ich ein Problem habe. Gemäß der Dokumentation von ParseInt wird der Integer-Typ angegeben, in den das Ergebnis passen muss. Die Bitgrößen 0, 8, 16, 32 und 64 entsprechen int, int8, int16, int32 und int64.
Aber für alle Werte wie 0,8,16,32 & amp; 64. Ich bekomme den gleichen Rückgabewert. d. h. vom Int64-Typ.
Könnte mir jemand zeigen, was ich vermisse.
Code: Ссылка
Gemäß der Dokumentation
func ParseInt (s Zeichenfolge, Basis int, bitSize int) (i Int64, Fehler Fehler)
ParseInt liefert immer int64
egal was. Außerdem
Das Argument bitSize gibt den Ganzzahltyp an, den das Ergebnis haben muss passen in
Im Grunde sagt der Parameter bitSize
nur, dass der String-Wert, den Sie analysieren wollen, nach dem Parsing in die BitSize passen sollte. Wenn nicht, wird außerhalb des Bereichs passieren.
Wie in diesem PlayGround : strconv.ParseInt("192", 10, 8)
(wie Sie den Wert nach der Parsing wäre größer als der Maximalwert von int8
).
Wenn Sie es auf den von Ihnen benötigten Wert parsen möchten, verwenden Sie einfach int8(i)
danach ( int8
, int16
, int32
).
PS Da Sie das Thema, wie man in ein bestimmtes intX konvertiert, berührt haben, würde ich sagen, dass es auch möglich ist, in unsigned int .
ParseInt
gibt immer int64
zurück, und Sie müssen das Ergebnis in den gewünschten Typ konvertieren. Wenn Sie 32
als drittes Argument übergeben, erhalten Sie einen Parse-Fehler, wenn der analysierte Wert nicht in int32
passt, der zurückgegebene Typ jedoch immer int64
.
Zum Beispiel:
%Vor%Tags und Links go