Conversão Básica de Tipos
Typecasting é o processo de converter dados de um tipo para outro. No entanto, é importante observar que nem sempre é possível converter dados de um tipo para outro. Por exemplo, podemos converter um float para um int e vice-versa. Porém, não faria sentido converter uma string para um int, e, portanto, isso não é possível.
Existem dois tipos de conversões de tipo ou typecasting. Um deles é o Type Casting Implícito. O type casting implícito ocorre quando o Go converte automaticamente um tipo para outro quando é seguro e não ambíguo. Por exemplo, quando atribuimos um valor inteiro a uma variável do tipo float, ele é tratado automaticamente como float, pois nenhum dado pode ser perdido durante a conversão (10 é o mesmo que 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
O outro tipo de conversão de tipo é a Conversão Explícita de Tipo, que ocorre quando o programador converte explicitamente dados ou expressões de um tipo para outro. A sintaxe para conversão explícita de tipo é desiredType(expression), por exemplo:
index.go
12345678package main import "fmt" func main() { var number1 float32 = 7.9 var number2 int = int(number1) fmt.Println(number2) // Outputs 7 }
No programa acima, convertemos um valor float32 para um int utilizando conversão explícita de tipo. Como resultado, a parte decimal do número original é descartada e apenas o valor inteiro 7 é armazenado em number2. É importante observar que, neste caso, parte dos dados é perdida, especificamente a parte decimal do número (0.9). No entanto, essa escolha foi feita de forma explícita.
Da mesma forma, podemos converter um rune em uma string. No capítulo Runas, exploramos um programa que exibia o valor de uma Runa, que era um número. No entanto, podemos exibir o caractere equivalente de uma Runa convertendo-a em uma string:
index.go
123456789package main import "fmt" func main() { var char rune = 'a' fmt.Println(char) // Outputs 97 fmt.Println(string(char)) // Outputs 'a' }
No entanto, não é possível converter uma string em um rune:
index.go
12var myString string = "A string value" fmt.Println(rune(myString)) // Error: cannot convert myString (variable of type string) to type rune
É importante observar que também não podemos converter uma string contendo um único caractere em uma rune:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain why we can't convert a string to a rune in Go?
Are there any workarounds for converting a string to a rune?
What happens if I try to convert a string to a rune in my code?
Awesome!
Completion rate improved to 1.96
Conversão Básica de Tipos
Deslize para mostrar o menu
Typecasting é o processo de converter dados de um tipo para outro. No entanto, é importante observar que nem sempre é possível converter dados de um tipo para outro. Por exemplo, podemos converter um float para um int e vice-versa. Porém, não faria sentido converter uma string para um int, e, portanto, isso não é possível.
Existem dois tipos de conversões de tipo ou typecasting. Um deles é o Type Casting Implícito. O type casting implícito ocorre quando o Go converte automaticamente um tipo para outro quando é seguro e não ambíguo. Por exemplo, quando atribuimos um valor inteiro a uma variável do tipo float, ele é tratado automaticamente como float, pois nenhum dado pode ser perdido durante a conversão (10 é o mesmo que 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
O outro tipo de conversão de tipo é a Conversão Explícita de Tipo, que ocorre quando o programador converte explicitamente dados ou expressões de um tipo para outro. A sintaxe para conversão explícita de tipo é desiredType(expression), por exemplo:
index.go
12345678package main import "fmt" func main() { var number1 float32 = 7.9 var number2 int = int(number1) fmt.Println(number2) // Outputs 7 }
No programa acima, convertemos um valor float32 para um int utilizando conversão explícita de tipo. Como resultado, a parte decimal do número original é descartada e apenas o valor inteiro 7 é armazenado em number2. É importante observar que, neste caso, parte dos dados é perdida, especificamente a parte decimal do número (0.9). No entanto, essa escolha foi feita de forma explícita.
Da mesma forma, podemos converter um rune em uma string. No capítulo Runas, exploramos um programa que exibia o valor de uma Runa, que era um número. No entanto, podemos exibir o caractere equivalente de uma Runa convertendo-a em uma string:
index.go
123456789package main import "fmt" func main() { var char rune = 'a' fmt.Println(char) // Outputs 97 fmt.Println(string(char)) // Outputs 'a' }
No entanto, não é possível converter uma string em um rune:
index.go
12var myString string = "A string value" fmt.Println(rune(myString)) // Error: cannot convert myString (variable of type string) to type rune
É importante observar que também não podemos converter uma string contendo um único caractere em uma rune:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Obrigado pelo seu feedback!