Grunnleggende Typekonvertering
Typecasting er prosessen med å konvertere data fra én datatyp til en annen. Det er imidlertid viktig å merke seg at det ikke alltid er mulig å konvertere data fra én datatyp til en annen. For eksempel kan vi konvertere en float til en int og omvendt. Det gir derimot ikke mening å konvertere en string til en int, og derfor er det ikke mulig.
Det finnes to typer typekonverteringer eller typecasting. En av dem er implisitt typekonvertering. Implisitt typekonvertering skjer når Go automatisk konverterer én type til en annen når det er trygt og entydig. For eksempel, når vi tildeler en heltallsverdi til en flyttallsvariabel, behandles den automatisk som en float, siden ingen data kan gå tapt under konverteringen (10 er det samme som 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
Den andre typen typekonvertering er eksplisitt typekonvertering, som skjer når programmereren eksplisitt konverterer data eller uttrykk fra én type til en annen. Syntaksen for eksplisitt typekonvertering er desiredType(expression), for eksempel:
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 ovenfor konverterer vi en float32-verdi til en int ved hjelp av eksplisitt typekonvertering. Som et resultat blir desimaldelen av det opprinnelige tallet forkastet, og kun heltallsverdien 7 lagres i number2. Det er viktig å merke seg at i dette tilfellet går noe data tapt, nærmere bestemt desimaldelen av tallet (0.9). Dette valget har vi imidlertid gjort eksplisitt.
På samme måte kan vi konvertere en rune til en string. I Runes-kapitlet utforsket vi et program som skrev ut verdien til en Rune, som var et tall. Vi kan imidlertid vise en Runes tegnrepresentasjon ved å konvertere den til en streng:
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 derimot ikke konvertere en string til 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 er viktig å merke seg at vi heller ikke kan konvertere en streng som inneholder ett enkelt tegn til en rune:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Grunnleggende Typekonvertering
Sveip for å vise menyen
Typecasting er prosessen med å konvertere data fra én datatyp til en annen. Det er imidlertid viktig å merke seg at det ikke alltid er mulig å konvertere data fra én datatyp til en annen. For eksempel kan vi konvertere en float til en int og omvendt. Det gir derimot ikke mening å konvertere en string til en int, og derfor er det ikke mulig.
Det finnes to typer typekonverteringer eller typecasting. En av dem er implisitt typekonvertering. Implisitt typekonvertering skjer når Go automatisk konverterer én type til en annen når det er trygt og entydig. For eksempel, når vi tildeler en heltallsverdi til en flyttallsvariabel, behandles den automatisk som en float, siden ingen data kan gå tapt under konverteringen (10 er det samme som 10.0):
index.go
1var myFloat float32 = 10 // A valid statement
Den andre typen typekonvertering er eksplisitt typekonvertering, som skjer når programmereren eksplisitt konverterer data eller uttrykk fra én type til en annen. Syntaksen for eksplisitt typekonvertering er desiredType(expression), for eksempel:
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 ovenfor konverterer vi en float32-verdi til en int ved hjelp av eksplisitt typekonvertering. Som et resultat blir desimaldelen av det opprinnelige tallet forkastet, og kun heltallsverdien 7 lagres i number2. Det er viktig å merke seg at i dette tilfellet går noe data tapt, nærmere bestemt desimaldelen av tallet (0.9). Dette valget har vi imidlertid gjort eksplisitt.
På samme måte kan vi konvertere en rune til en string. I Runes-kapitlet utforsket vi et program som skrev ut verdien til en Rune, som var et tall. Vi kan imidlertid vise en Runes tegnrepresentasjon ved å konvertere den til en streng:
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 derimot ikke konvertere en string til 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 er viktig å merke seg at vi heller ikke kan konvertere en streng som inneholder ett enkelt tegn til en rune:
index.go
1234567package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
Takk for tilbakemeldingene dine!