HOWTO · Go

Como Converter um Valor Intensivo em String em Go

Para converter valores int para um valor string, usamos a função Itoa do pacote strconv.

Os tipos de dados determinam os valores que podem ser atribuídos ao tipo e as operações que podem ser realizadas sobre ele. A conversão de tipos de dados é uma operação amplamente utilizada na programação e entre as conversões de tipos de dados a conversão de int para o valor da string é amplamente popular.

É usada enquanto se imprime o número para a tela ou se trabalha com o número como se fosse uma string. Go fornece conversão de string e número inteiro diretamente de um pacote proveniente da biblioteca padrão strconv.

Se utilizarmos a conversão simples int para string, o valor inteiro é interpretado como um ponto de código Unicode. E a string resultante conterá o caractere representado pelo ponto de código, codificado em UTF-8.

package main

import "fmt"

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

Resultado:

Value of 97 after conversion : a

Mas isto é indesejável, e por isso utilizamos algumas funções padrão para converter números inteiros para o tipo de dados string, que são discutidos abaixo:

Itoa Função do pacote strconv

Pacote strconv implementa conversões de e para representações de strings de tipos de dados básicos. Para converter um número inteiro em uma string, utilizamos a função Itoa do pacote 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)
}    

Resultado:

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

Função FormatInt do pacote strconv

Utilizamos strconv.FormatInt para formatar um int64 em uma determinada base. O FormatInt dá a representação em string do inteiro na base mencionada, para 2 <= base <= 36 e o resultado utiliza as letras minúsculas a a z para valores de 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

fmt.Sprint Método

Quando passamos um número inteiro para o método fmt.Sprint, obtemos um valor de string do número inteiro.

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)
}  

Resultado:

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