Go Programming

Conversão Eficiente de Inteiro para String em Go

Spread the love

Go oferece diversos métodos eficientes para converter inteiros em suas representações de string. Esta é uma tarefa comum ao exibir números, registrar dados ou construir strings para diversos propósitos. Este artigo explora três abordagens principais: usando a função strconv.Itoa, a função strconv.FormatInt e o método fmt.Sprint.

Sumário

Função strconv.Itoa

Para converter inteiros com sinal (int) em strings, strconv.Itoa fornece a solução mais simples e eficiente. Ela recebe diretamente um inteiro e retorna seu equivalente em string. Embora altamente confiável, um erro potencial (embora raro) resultará em um pânico.


package main

import (
	"fmt"
	"strconv"
)

func main() {
	num := 12345
	str := strconv.Itoa(num)
	fmt.Println(str) // Saída: 12345

	negativeNum := -9876
	negativeStr := strconv.Itoa(negativeNum)
	fmt.Println(negativeStr) // Saída: -9876
}

Sua concisão e velocidade a tornam ideal para conversões diretas de inteiros com sinal.

Função strconv.FormatInt

strconv.FormatInt oferece maior flexibilidade, suportando diversos tamanhos de inteiros (int64, int32, etc.) e permitindo especificar a base (radix) para a string de saída. Este recurso é particularmente útil para representar números em formatos binário, octal ou hexadecimal.


package main

import (
	"fmt"
	"strconv"
)

func main() {
	num := int64(12345)
	str := strconv.FormatInt(num, 10) // Base 10 (decimal)
	fmt.Println(str) // Saída: 12345

	hexStr := strconv.FormatInt(num, 16) // Base 16 (hexadecimal)
	fmt.Println(hexStr) // Saída: 3039

	binStr := strconv.FormatInt(num, 2) // Base 2 (binário)
	fmt.Println(binStr) // Saída: 11000000111001

    unsignedNum := uint64(12345)
    unsignedStr := strconv.FormatUint(unsignedNum, 10)
    fmt.Println(unsignedStr) //Saída: 12345
}

O segundo argumento define a base (10 para decimal, 16 para hexadecimal, 2 para binário, 8 para octal). Para inteiros sem sinal, use strconv.FormatUint.

Método fmt.Sprint

A função fmt.Sprint fornece uma solução de propósito geral para converter diversos tipos de dados, incluindo inteiros, em strings. Embora menos eficiente que strconv.Itoa para conversões simples de inteiros, sua versatilidade se destaca ao formatar múltiplos valores concorrentemente.


package main

import (
	"fmt"
)

func main() {
	num := 12345
	str := fmt.Sprint(num)
	fmt.Println(str) // Saída: 12345

	str2 := fmt.Sprintf("O número é: %d", num) //Mais controle sobre a formatação
	fmt.Println(str2) // Saída: O número é: 12345

    multipleValues := fmt.Sprint("Valor1: ", 10, ", Valor2: ", 20)
    fmt.Println(multipleValues) // Saída: Valor1: 10, Valor2: 20
}

fmt.Sprint é particularmente útil para incorporar inteiros em strings maiores. fmt.Sprintf oferece controle mais refinado sobre a formatação usando especificadores de formato (como %d para inteiros decimais).

Em resumo, strconv.Itoa é melhor para conversões simples de inteiros com sinal; strconv.FormatInt (e strconv.FormatUint) fornece controle de base e lida com diversos tamanhos de inteiros; e fmt.Sprint e fmt.Sprintf oferecem maior flexibilidade, mas podem ser menos eficientes para conversões básicas de inteiro para string. Selecione o método que se alinha melhor às suas necessidades e estilo de codificação.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *