Grundläggande Typomvandling
Typomvandling är processen att konvertera data från en datatyp till en annan. Det är dock viktigt att notera att det inte alltid är möjligt att konvertera data mellan olika datatyper. Till exempel kan vi konvertera en float till en int och tvärtom. Däremot är det inte meningsfullt att konvertera en string till en int, och därför är det inte möjligt.
Det finns två typer av typkonverteringar eller typomvandlingar. En av dem är implicit typomvandling. Implicit typomvandling sker när Go automatiskt konverterar en typ till en annan när det är säkert och entydigt. Till exempel, när vi tilldelar ett heltalsvärde till en float-variabel behandlas det automatiskt som en float, eftersom ingen data kan gå förlorad under konverteringen (10 är samma som 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
Den andra typen av typomvandling är Explicit Typomvandling, vilket sker när programmeraren uttryckligen konverterar data eller uttryck från en typ till en annan. Syntaxen för explicit typomvandling är desiredType(expression), till exempel:
index.go
12345678package main import "fmt" func main() { var number1 float32 = 7.9 var number2 int = int(number1) fmt.Println(number2) // Outputs 7 }
I programmet ovan konverteras ett float32-värde till en int med hjälp av explicit typomvandling. Som resultat tas decimaldelen av det ursprungliga talet bort, och endast heltalsvärdet 7 lagras i number2. Det är viktigt att notera att viss data går förlorad i detta fall, specifikt decimaldelen av talet (0.9). Detta val gjordes dock uttryckligen.
På liknande sätt kan en rune konverteras till en string. I kapitlet Runor undersökte vi ett program som visade värdet av en Rune, vilket var ett tal. Vi kan dock visa motsvarande tecken för en Rune genom att konvertera den till en sträng:
index.go
123456789package main import "fmt" func main() { var char rune = 'a' fmt.Println(char) // Outputs 97 fmt.Println(string(char)) // Outputs 'a' }
Vi kan dock inte konvertera en string till en rune:
index.go
12var myString string = "A string value" fmt.Println(rune(myString)) // Error: cannot convert myString (variable of type string) to type rune
Det är viktigt att notera att vi inte heller kan konvertera en sträng som innehåller ett enda tecken till en rune:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Grundläggande Typomvandling
Svep för att visa menyn
Typomvandling är processen att konvertera data från en datatyp till en annan. Det är dock viktigt att notera att det inte alltid är möjligt att konvertera data mellan olika datatyper. Till exempel kan vi konvertera en float till en int och tvärtom. Däremot är det inte meningsfullt att konvertera en string till en int, och därför är det inte möjligt.
Det finns två typer av typkonverteringar eller typomvandlingar. En av dem är implicit typomvandling. Implicit typomvandling sker när Go automatiskt konverterar en typ till en annan när det är säkert och entydigt. Till exempel, när vi tilldelar ett heltalsvärde till en float-variabel behandlas det automatiskt som en float, eftersom ingen data kan gå förlorad under konverteringen (10 är samma som 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
Den andra typen av typomvandling är Explicit Typomvandling, vilket sker när programmeraren uttryckligen konverterar data eller uttryck från en typ till en annan. Syntaxen för explicit typomvandling är desiredType(expression), till exempel:
index.go
12345678package main import "fmt" func main() { var number1 float32 = 7.9 var number2 int = int(number1) fmt.Println(number2) // Outputs 7 }
I programmet ovan konverteras ett float32-värde till en int med hjälp av explicit typomvandling. Som resultat tas decimaldelen av det ursprungliga talet bort, och endast heltalsvärdet 7 lagras i number2. Det är viktigt att notera att viss data går förlorad i detta fall, specifikt decimaldelen av talet (0.9). Detta val gjordes dock uttryckligen.
På liknande sätt kan en rune konverteras till en string. I kapitlet Runor undersökte vi ett program som visade värdet av en Rune, vilket var ett tal. Vi kan dock visa motsvarande tecken för en Rune genom att konvertera den till en sträng:
index.go
123456789package main import "fmt" func main() { var char rune = 'a' fmt.Println(char) // Outputs 97 fmt.Println(string(char)) // Outputs 'a' }
Vi kan dock inte konvertera en string till en rune:
index.go
12var myString string = "A string value" fmt.Println(rune(myString)) // Error: cannot convert myString (variable of type string) to type rune
Det är viktigt att notera att vi inte heller kan konvertera en sträng som innehåller ett enda tecken till en rune:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Tack för dina kommentarer!