Wie konvertiert man Zeichenkette in Ganzzahl-Typ in Go
-
Funktion
Atoi()
aus dem Paketstrconv
-
ParseInt()
Funktion ausstrconv
Paket -
fmt.Sscanf
-Methode - Vergleich der Methoden
Go ist die statisch typisierte Sprachbedeutung, wenn wir die Variable als int
definieren, kann sie nur int
sein; wir können ihr nicht die string
zuweisen, ohne den Zeichenketten-Datentyp einer Variablen zu konvertieren. Go hat ein eingebautes Paket namens strconv
, das drei Funktionen Atoi()
, Sscanf()
und ParseInt()
zur Verfügung stellt, um Go Zeichenkette nach int zu konvertieren.
Funktion Atoi()
aus dem Paket strconv
Paket strconv
implementiert Konvertierungen zu und von Zeichenkettenrepräsentationen von Basisdatentypen. Um eine Zeichenkette in eine ganze Zahl zu konvertieren, verwenden wir die Funktion Atoi()
aus dem Paket strconv
. Atoi
steht für ASCII zu Ganzzahl
.
package main
import (
"fmt"
"strconv"
)
func main() {
age := "13"
fmt.Printf("Datatype of age before conversion : %T\n", age)
fmt.Println("After Conversion:")
if sv, err := strconv.Atoi(age); err == nil {
fmt.Printf("%T, %v\n", sv, sv)
}
}
Ausgabe:
Datatype of age before conversion : string
After Conversion:
int, 13
Wenn die Eingabezeichenkette nicht im Integer-Format ist, gibt die Funktion null zurück.
package main
import (
"fmt"
"strconv"
)
func main() {
age := "abc"
fmt.Printf("Datatype of age before conversion : %T\n", age)
fmt.Println("After Conversion:")
sv, _ := strconv.Atoi(age)
fmt.Printf("%T, %v\n", sv, sv)
}
Ausgabe:
Datatype of age before conversion : string
After Conversion:
int, 0
ParseInt()
Funktion aus strconv
Paket
Die Methode strconv.ParseInt(s, base, bitSize)
interpretiert die Eingabezeichenkette s
in der gegebenen Basis
(0, 2 bis 36) und Bitgröße (0 bis 64) und gibt eine entsprechende Ganzzahl zurück. Atoi(s)
ist äquivalent zu ParseInt(s, 10, 0)
.
package main
import (
"fmt"
"reflect"
"strconv"
)
func main() {
x := "123"
fmt.Println("Value of x before conversion: ", x)
fmt.Println("Datatype of x before conversion:", reflect.TypeOf(x))
intStr, _ := strconv.ParseInt(x, 10, 64)
fmt.Println("Value after conversion: ", intStr)
fmt.Println("Datatype after conversion:", reflect.TypeOf(intStr))
}
Ausgabe:
Value of x before conversion: 123
Datatype of x before conversion: string
Value after conversion: 123
Datatype after conversion: int64
fmt.Sscanf
-Methode
fmt.Sscanf()
eignet sich hervorragend zum Parsen benutzerdefinierter Zeichenketten, die eine Zahl enthalten. Die Funktion Sscanf()
scannt die Argumentzeichenkette, speichert aufeinanderfolgende, durch Leerzeichen getrennte Werte in aufeinanderfolgende Argumente, wie durch das Format definiert, und gibt die Anzahl der erfolgreich geparsten Elemente zurück.
package main
import (
"fmt"
)
func main() {
s := "id:00234"
var i int
if _, err := fmt.Sscanf(s, "id:%5d", &i); err == nil {
fmt.Println(i)
}
}
Ausgabe:
234
Vergleich der Methoden
Die strconv.ParseInt()
ist die schnellste aller Methoden, strconv.Atoi()
ist etwas langsamer als strconv.ParseInt()
und fmt.Sscanf()
ist die langsamste von allen, aber die flexibelste Methode.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn