Como converter int para string em Go: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

«Passei uma hora quebrando a cabeça, e a solução tem três linhas»: como converter int para string em Go

\n\n

Imagine: você está escrevendo um microsserviço em Go, processando IDs numéricos de usuários e de repente percebe que precisa concatená-los com texto em logs ou respostas HTTP. Você escreve algo como str := "User_" + id — e o compilador dá erro: cannot use id (type int) as type string in concatenation. Familiar?

\n\n

Esta é uma das perguntas mais populares no Stack Overflow sobre Go — «How to convert an int value to string in Go?» — foi visualizada centenas de milhares de vezes. E não é à toa: em Go a tipagem é forte, e simplesmente «somar» um número com uma string não funciona. Mas não se preocupe — hoje vamos abordar todas as formas de conversão de int para string em Go. Você vai descobrir qual método é mais rápido, qual é mais seguro e quando usar cada um. Vamos lá!

\n\n

Por que o Go não permite simplesmente somar int e string?

\n\n

Ao contrário de JavaScript ou Python, onde "Age: " + 25 funciona «de fábrica», o Go exige conversão explícita de tipos. Isso é feito por segurança: você deve sempre controlar o que está sendo convertido em quê. Imagine que você acidentalmente soma um número com texto — em outras linguagens, isso pode gerar bugs difíceis de detectar. Em Go, o compilador diz imediatamente: «Pare, não pode».

\n\n

Por isso, para converter int em string em Go, existem funções específicas da biblioteca padrão. Sem dependências externas — apenas Go puro.

\n\n

Método nº1: fmt.Sprintf — o «canivete suíço» universal

\n\n

A forma mais intuitiva é usar a função fmt.Sprintf. Você provavelmente já a conhece da saída formatada. Ela consegue converter qualquer coisa em string — números, valores booleanos, structs.

\n\n
package main\n\nimport "fmt"\n\nfunc main() {\n    age := 25\n    str := fmt.Sprintf("Age: %d", age)\n    fmt.Println(str) // Saída: Age: 25\n}
\n\n

Vantagens:

\n
    \n
  • Muito flexível: permite incorporar o número diretamente na string com o formato desejado (decimal, hexadecimal, com zeros à esquerda).
  • \n
  • Adequado para qualquer tipo — não apenas int, mas também float, bool, struct.
  • \n
\n\n

Desvantagens:

\n
    \n
  • Usa reflexão internamente, portanto é mais lento que funções especializadas.
  • \n
  • Se você precisa apenas obter uma string a partir de um número (sem formatação), é excessivo.
  • \n
\n\n

Quando usar: quando você precisa não apenas converter, mas também formatar a saída — adicionar símbolos de moeda, alinhar por largura, converter para HEX.

\n\n

Método nº2: strconv.Itoa — rápido e simples (int → string)

\n\n

Se sua tarefa é apenas obter a representação em string do número, sem «enfeites», use strconv.Itoa. Esta é uma função especializada para converter int em string. Ela é rápida e não faz operações desnecessárias.

\n\n
package main\n\nimport (\n    "fmt"\n    "strconv"\n)\n\nfunc main() {\n    number := 42\n    str := strconv.Itoa(number)\n    fmt.Println(str) // Saída: "42"\n    fmt.Printf("Tipo: %T\\n", str) // Tipo: string\n}
\n\n

Vantagens:

\n
    \n
  • Máximo desempenho para o caso básico.
  • \n
  • Simplicidade: uma função — uma ação.
  • \n
\n\n

Desvantagens:

\n
    \n
  • Funciona apenas com o tipo int. Se você tem int64, int32, etc., precisa primeiro converter para int ou usar outro método.
  • \n
  • Não há controle sobre a base numérica — apenas representação decimal.
  • \n
\n\n

Quando usar: quando você tem um int comum e precisa apenas obter a string — esta é sua escolha padrão.

\n\n

Método nº3: strconv.FormatInt — controle sobre a base numérica

\n\n

E se você precisar converter um número n

Blogs

Book Recommendations