Como Converter um Valor Intensivo em String em Go

Suraj Joshi 16 fevereiro 2024
  1. Itoa Função do pacote strconv
  2. Função FormatInt do pacote strconv
  3. fmt.Sprint Método
Como Converter um Valor Intensivo em String em Go

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
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Go String