Como Converter strings em Tipo Inteiro em Go
-
Atoi()
Função do pacotestrconv
-
ParseInt()
Função do pacotestrconv
-
fmt.Sscanf
Método - Comparação de métodos
Go é a linguagem estaticamente digitada que significa se definirmos a variável como int
, ela só pode ser int
; não podemos atribuir o string
a ela sem converter o tipo de dados string de uma variável. Go tem um pacote embutido chamado strconv
que fornece três funções Atoi()
, Sscanf()
, e ParseInt()
para converter a string de Go para int.
Atoi()
Função do pacote strconv
O pacote strconv
implementa conversões de e para representações de strings de tipos de dados básicos. Para converter uma string em um número inteiro, utilizamos a função Atoi()
do pacote 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)
}
}
Resultado:
Datatype of age before conversion : string
After Conversion:
int, 13
Se a string de entrada não estiver no formato inteiro, então a função retorna zero.
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)
}
Resultado:
Datatype of age before conversion : string
After Conversion:
int, 0
ParseInt()
Função do pacote strconv
O método strconv.ParseInt(s, base, bitSize)
interpreta a string de entrada s
na base dada (0, 2 a 36) e tamanho de bit (0 a 64) e retorna um número inteiro correspondente. Atoi(s)
é equivalente a 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))
}
Resultado:
Value of x before conversion: 123
Datatype of x before conversion: string
Value after conversion: 123
Datatype after conversion: int64
fmt.Sscanf
Método
O fmt.Sscanf()
é ótimo para a análise de strings personalizadas com um número. A função fmt.Sscanf()
escaneia a string de argumentos, armazenando sucessivos valores separados por espaço em sucessivos argumentos conforme definido pelo formato e retorna o número de itens analisados com sucesso.
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)
}
}
Resultado:
234
Comparação de métodos
O strconv.ParseInt()
é o mais rápido de todos os métodos, o strconv.Atoi()
é um pouco mais lento que o strconv.ParseInt()
e o fmt.Sscanf()
é o método mais lento de todos, exceto o mais flexível.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn