Cómo convertir una cadena a un tipo entero en Go
-
Atoi()
función del paquetestrconv
-
La función
PareInt()
del paquetestrconv
-
Método
fmt.Sscanf
- Comparación de métodos
Go es el significado del lenguaje estático si definimos la variable como int
, sólo puede ser int
; no podemos asignarle la cadena
sin convertir el tipo de datos de la cadena de una variable. Go tiene un paquete incorporado llamado strconv
que proporciona tres funciones Atoi()
, Sscanf()
, y PareInt()
para convertir la cadena Go en int.
Atoi()
función del paquete strconv
El paquete strconv
implementa conversiones a y desde representaciones de cadenas de tipos de datos básicos. Para convertir una cadena en un número entero, usamos la función Atoi()
del paquete strconv
. Atoi
significa 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)
}
}
Producción :
Datatype of age before conversion : string
After Conversion:
int, 13
Si la cadena de entrada no está en formato de entero, entonces la función devuelve cero.
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)
}
Producción :
Datatype of age before conversion : string
After Conversion:
int, 0
La función PareInt()
del paquete strconv
El método strconv.ParseInt(s, base, bitSize)
interpreta la cadena de entrada s
en la base
dada (0, 2 a 36) y el tamaño del bit (0 a 64) y devuelve un entero correspondiente. Atoi(s)
es equivalente a PareInt(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))
}
Producción :
Value of x before conversion: 123
Datatype of x before conversion: string
Value after conversion: 123
Datatype after conversion: int64
Método fmt.Sscanf
fmt.Sscanf()
es genial para analizar cadenas personalizadas que contengan un número. La función Sscanf()
escanea la cadena de argumentos, almacenando valores sucesivos separados por el espacio en argumentos sucesivos definidos por el formato y devuelve el número de elementos analizados con éxito.
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)
}
}
Producción :
234
Comparación de métodos
El strconv.ParseInt()
es el más rápido de todos los métodos, strconv.Atoi()
es un poco más lento que strconv.ParseInt()
y fmt.Sscanf()
es el más lento de todos pero el más flexible.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn