Cómo convertir int a string en Go: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

«Me rompí la cabeza una hora, y la solución está en tres líneas»: cómo convertir int a string en Go

\n\n

Imagine: está escribiendo un microservicio en Go, procesa IDs numéricos de usuarios y de repente se da cuenta de que necesita concatenarlos con texto en registros o respuestas HTTP. Escribe algo como str := "User_" + id — y el compilador muestra un error: cannot use id (type int) as type string in concatenation. ¿Le suena familiar?

\n\n

Esta es una de las preguntas más populares en Stack Overflow sobre Go — «How to convert an int value to string in Go?» — ha sido vista cientos de miles de veces. Y con razón: en Go hay tipado estricto, y simplemente «sumar» un número con una cadena no funciona. Pero no se preocupe — hoy analizaremos todas las formas de convertir int a string en Go. Descubrirá qué método es más rápido, cuál es más seguro y cuándo usar cada uno. ¡Allá vamos!

\n\n

¿Por qué Go no permite simplemente sumar int y string?

\n\n

A diferencia de JavaScript o Python, donde "Age: " + 25 funciona «de fábrica», Go requiere una conversión explícita de tipos. Esto se hace por seguridad: siempre debe controlar qué se convierte y en qué. Imagine que accidentalmente suma un número con texto — en otros lenguajes esto puede provocar errores difíciles de detectar. En Go, el compilador le dirá de inmediato: «Alto, así no se puede».

\n\n

Por lo tanto, para convertir int

a string en Go existen funciones especiales de la biblioteca estándar. Sin dependencias externas — solo Go puro.

\n\n

Método n.º 1: fmt.Sprintf — la «navaja suiza» universal

\n\n

La forma más intuitiva es usar la función fmt.Sprintf. Seguro que ya la conoce por la salida formateada. Puede convertir cualquier cosa en una cadena — números, valores booleanos, estructuras.

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

Ventajas:

\n
    \n
  • Muy flexible: puede incrustar el número directamente en la cadena con el formato deseado (decimal, hexadecimal, con ceros a la izquierda).
  • \n
  • Adecuado para cualquier tipo — no solo int, sino también float, bool, struct.
  • \n
\n\n

Desventajas:

\n
    \n
  • Utiliza reflexión internamente, por lo que funciona más lento que las funciones especializadas.
  • \n
  • Si solo necesita obtener una cadena a partir de un número (sin formato), es redundante.
  • \n
\n\n

Cuándo usarlo: cuando no solo necesita convertir, sino también formatear la salida — agregar símbolos de moneda, alinear por ancho, convertir a HEX.

\n\n

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

\n\n

Si su tarea es simplemente obtener la representación en cadena de un número, sin «adornos», use strconv.Itoa. Esta es una función especializada para convertir int a string. Funciona rápido y no realiza operaciones innecesarias.

\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) // Salida: "42"\n    fmt.Printf("Tipo: %T\\n", str) // Tipo: string\n}
\n\n

Ventajas:

\n
    \n
  • Máximo rendimiento para el caso básico.
  • \n
  • Simplicidad: una función — una acción.
  • \n
\n\n

Desventajas:

\n
    \n
  • Solo funciona con el tipo int. Si tiene int64, int32, etc., primero debe convertirlo a int o usar otro método.
  • \n
  • Sin control sobre el sistema numérico — solo representación decimal.
  • \n
\n\n

Cuándo usarlo: cuando tiene un int normal y solo necesita obtener una cadena — esta es su opción por defecto.

\n\n

Método n.º 3: strconv.FormatInt — control sobre el sistema numérico

\n\n

¿Y si necesita convertir un número n

Blogs

Book Recommendations