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!