Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Grundläggande Typomvandling | Datatyper
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion till Golang

bookGrundlä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

index.go

copy
1
var 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

index.go

copy
12345678
package 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

index.go

copy
123456789
package 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

index.go

copy
12
var 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

index.go

copy
1234567
package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
question mark

Vilken av följande är den korrekta syntaxen för typomvandling i Go?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

bookGrundlä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

index.go

copy
1
var 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

index.go

copy
12345678
package 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

index.go

copy
123456789
package 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

index.go

copy
12
var 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

index.go

copy
1234567
package main import "fmt" func main() { var text string = "a"; fmt.Printf(rune(text)) // Error here }
question mark

Vilken av följande är den korrekta syntaxen för typomvandling i Go?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 6
some-alt