Assim como em outras linguagens, Golang possui a característica de casting de tipos de dados. Porém,
a linguagem Go não permite a conversão implícita entre tipo de dados fazendo uma atribuição direta.
Exemplo 1: Simular casting implícito em C
//2 bytes de tamanho
var valor1 uint16 = 256
//1 byte de tamanho
var valor2 uint8 = 255
//atribuição
valor1 = valor2 //Erro!
Saída
./prog.go:14:11: cannot use valor2 (variable of type uint8) as uint16 value in assignment
Para a conversão entre tipos precisamos de realizar o operador de conversão/casting de cada tipo:
Sintaxe
tipo_dado(valor)
Exemplo 2
var valor1 uint16 = 256
var valor2 uint8 = 0
valor2 = uint16(valor1) //conversão usando cast
Saída
-
Como o tipo de dado uint8 armazena apenas 1 byte, no casting acima, apenas o último byte do inteiro foi atribuído
a variável valor2 resultando em um valor 0.
Para converter valores float, também é feita da mesma forma. Podemos por exemplo recuperar a parte inteiro de
um valor float como abaixo:
Sintaxe
tipo_dado(valor)
Exemplo 2
var valor_float float32 = 10.99
var valorInt = uint32(valor_float) //parte inteira 10
var decimal float32 = valor_float - valorInt;
Saída
-