HOWTO · Go

Cómo convertir un valor int en cadena en Go

Para convertir los valores int a un valor de cadena, usamos la función Itoa del paquete strconv.

Los tipos de datos determinan los valores que se pueden asignar al tipo y las operaciones que se pueden realizar sobre él. La conversión de tipos de datos es una operación muy utilizada en la programación y entre las conversiones de tipos de datos la conversión de int al valor de cadena es muy popular.

Se utiliza mientras se imprime el número en la pantalla o se trabaja con el número como si fuera una cadena de caracteres. Go proporciona la conversión de cadenas y enteros directamente desde un paquete que viene de la biblioteca estándar strconv.

Si usamos la conversión simple de int a string, el valor entero es interpretado como un punto de código Unicode. Y la cadena resultante contendrá el carácter representado por el punto de código, codificado en UTF-8.

package main

import "fmt"

func main() {
    s := string(97)
    fmt.Printf("Value of 97 after conversion : %v\n", s)
}  

Producción :

Value of 97 after conversion : a

Pero esto es indeseable, y por lo tanto usamos algunas funciones estándar para convertir los números enteros al tipo de datos de cadena, que se discuten a continuación:

La función Itoa del paquete strconv

El paquete strconv implementa conversiones a y desde representaciones de cadenas de tipos de datos básicos. Para convertir un número entero en una cadena, usamos la función Itoa del paquete strconv.

package main

import (
    "fmt"
    "strconv"
)

func main() {
    x := 138
    fmt.Printf("Datatype of 138 before conversion : %T\n", x)
    a := strconv.Itoa(x)
    fmt.Printf("Datatype of 138 after conversion : %T\n", a)

    fmt.Println("Number: " + a)
}    

Producción :

Datatype of 138 before conversion : int
Datatype of 138 after conversion : string
Number: 138

La función FormatInt del paquete strconv

Usamos strconv.FormatInt para dar formato a un int64 en una base dada. FormatInt da la representación de la cadena de números enteros en la base mencionada, para 2 <= base <= 36 y el resultado utiliza las letras minúsculas a a z para los valores de los dígitos >= 10.

package main

import (
    "fmt"
    "strconv"
)

func main() {
    var integer_1 int64 = 31
    fmt.Printf("Value of integer_1 before conversion : %v\n", integer_1)
    fmt.Printf("Datatype of integer_1 before conversion : %T\n", integer_1)

    var string_1 string = strconv.FormatInt(integer_1, 10)
    fmt.Printf("Value of integer_1 after conversion in base 10: %v\n", string_1)
    fmt.Printf("Datatype of integer_1 after conversion in base 10 : %T\n", string_1)

    var string_2 string = strconv.FormatInt(integer_1, 16)
    fmt.Printf("Value of integer_1 after conversion in base 16 : %v\n", string_2)
    fmt.Printf("Datatype of integer_1 after conversion in base 16 : %T\n", string_2)
}    

Resultado:

Value of integer_1 before conversion : 31
Datatype of integer_1 before conversion : int64
Value of integer_1 after conversion in base 10: 31
Datatype of integer_1 after conversion in base 10 : string
Value of integer_1 after conversion in base 16 : 1f
Datatype of integer_1 after conversion in base 16 : string

Método fmt.Sprint

Cuando pasamos un entero al método fmt.Sprint, obtenemos un valor de cadena del entero.

package main

import (
    "fmt"
)

func main() {

    x := 138
    fmt.Printf("Datatype of 138 before conversion : %T\n", x)
    a := fmt.Sprint(x)
    fmt.Printf("Datatype of 138 after conversion : %T\n", a)

    fmt.Println("Number: " + a)
}  

Producción :

Datatype of 138 before conversion : int
Datatype of 138 after conversion : string
Number: 138