Comment convertir une chaîne de caractères en un nombre entier en Go
-
La fonction
Atoi()
du paquetstrconv
-
Fonction
ParseInt()
du paquetstrconv
-
Méthode
fmt.Sscanf
- Comparaison des méthodes
Go est la signification de la langue tapée statiquement, si nous définissons la variable comme int
, elle ne peut être que int
; nous ne pouvons pas lui assigner la chaîne
sans convertir le type de données de la chaîne d’une variable. Go a un paquet intégré appelé strconv
qui fournit trois fonctions Atoi()
, Sscanf()
, et ParseInt()
pour convertir la chaîne de Go en int.
La fonction Atoi()
du paquet strconv
Le paquet strconv
implémente des conversions vers et à partir de représentations de chaînes de caractères de types de données de base. Pour convertir une chaîne de caractères en un nombre entier, nous utilisons la fonction Atoi()
du paquet strconv
. Atoi
signifie ASCII to integer
.
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)
}
}
Production:
Datatype of age before conversion : string
After Conversion:
int, 13
Si la chaîne d’entrée n’est pas au format entier, alors la fonction retourne zéro.
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)
}
Production:
Datatype of age before conversion : string
After Conversion:
int, 0
Fonction ParseInt()
du paquet strconv
La méthode strconv.ParseInt(s, base, bitSize)
interprète la chaîne d’entrée s
dans la base
donnée (0, 2 à 36) et la taille des bits (0 à 64) et retourne un entier correspondant. Atoi(s)
est équivalent à 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))
}
Production:
Value of x before conversion: 123
Datatype of x before conversion: string
Value after conversion: 123
Datatype after conversion: int64
Méthode fmt.Sscanf
fmt.Sscanf()
est idéal pour analyser des chaînes de caractères personnalisées contenant un nombre. La fonction Sscanf()
analyse la chaîne d’arguments, en stockant des valeurs successives séparées par des espaces dans des arguments successifs définis par le format et retourne le nombre d’éléments analysés avec succès.
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)
}
}
Production:
234
Comparaison des méthodes
La méthode strconv.ParseInt()
est la plus rapide de toutes, strconv.Atoi()
est un peu plus lente que strconv.ParseInt()
et fmt.Sscanf()
est la plus lente de toutes mais la plus souple.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn