Go oferece diversos métodos eficientes para converter strings em inteiros, uma tarefa comum em vários cenários de programação. Este artigo explora três abordagens principais, destacando seus pontos fortes e fracos para ajudar você a escolher o melhor método para suas necessidades específicas.
Sumário
1. strconv.Atoi()
A função strconv.Atoi()
fornece uma maneira concisa de converter uma string de base-10 em um inteiro. Sua simplicidade a torna ideal para conversões diretas.
package main
import (
"fmt"
"strconv"
)
func main() {
str := "12345"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("Erro:", err)
} else {
fmt.Println("Inteiro:", num)
}
}
A função retorna tanto o inteiro convertido quanto um valor de erro. Sempre verifique a existência de erros para lidar com casos em que a string de entrada não é um inteiro válido.
2. strconv.ParseInt()
Para conversões de inteiros mais flexíveis, strconv.ParseInt()
permite especificar a base (radix) e o tamanho inteiro desejado (por exemplo, int32, int64).
package main
import (
"fmt"
"strconv"
)
func main() {
str := "1A"
num, err := strconv.ParseInt(str, 16, 64) // Base 16, inteiro de 64 bits
if err != nil {
fmt.Println("Erro:", err)
} else {
fmt.Println("Inteiro:", num)
}
str2 := "101101"
num2, err := strconv.ParseInt(str2, 2, 64) // Base 2, inteiro de 64 bits
if err != nil {
fmt.Println("Erro:", err)
} else {
fmt.Println("Inteiro:", num2)
}
}
Este exemplo demonstra a conversão de strings hexadecimais e binárias. O segundo argumento define a base, e o terceiro especifica o tamanho em bits do inteiro resultante. O tratamento de erros continua crucial.
3. fmt.Sscanf()
fmt.Sscanf()
oferece uma abordagem mais geral para análise de strings, útil ao lidar com formatos de string complexos. No entanto, para conversões de inteiros simples, geralmente é menos eficiente do que as funções strconv
.
package main
import (
"fmt"
)
func main() {
str := "Valor: 12345"
var num int
_, err := fmt.Sscanf(str, "Valor: %d", &num)
if err != nil {
fmt.Println("Erro:", err)
} else {
fmt.Println("Inteiro:", num)
}
}
A string de formato “Valor: %d” dita como a string é analisada. %d
significa um inteiro a ser extraído e armazenado na variável num
. Este método é poderoso para analisar dados estruturados, mas adiciona complexidade para conversões de inteiros simples.
4. Comparação dos Métodos
A escolha do método certo depende de suas necessidades específicas:
Método | Suporte à Base | Controle de Tamanho em Bits | Tratamento de Erros | Simplicidade | Caso de Uso |
---|---|---|---|---|---|
strconv.Atoi() |
Apenas Base 10 | Não | Sim | Alta | Conversões simples de base-10 |
strconv.ParseInt() |
Variável | Sim | Sim | Média | Base e tamanho de bits flexíveis |
fmt.Sscanf() |
Variável | Sim | Sim | Baixa | Análise de strings complexas |
Para conversões básicas de base-10, strconv.Atoi()
é a mais simples e eficiente. strconv.ParseInt()
oferece maior flexibilidade para diferentes bases e tamanhos de inteiros. fmt.Sscanf()
é melhor para extrair inteiros de estruturas de string mais complexas.