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 is a backend software engineer at Matrice.ai.
LinkedIn