Exempel på gjutning av Golang

Exempel Pa Gjutning Av Golang



Processen att ändra ett värdes datatyp från en typ till en annan kallas typgjutning, ibland känd som typkonvertering. Typgjutning utförs i Go med de explicita typkonverteringarna. Go stöder stark skrivning. När vi konverterar mellan typer måste vi alltså uttryckligen ange vårt mål. Detta främjar typsäkerheten och minskar sannolikheten för skrivfel. I den här artikeln kommer vi att utforska om casting med olika typer i Go.

Exempel 1: Golang Basic Type Casting

Låt oss börja med exemplet med direkt och grundläggande casting i Go eftersom vi kräver typecasting för att ändra typen av variabel, var som helst.

paket huvud
importera (
'fmt'
)
func huvud () {
var x int = 31
och := flyta64 ( x )
fmt . Println ( och )
}

Här börjar vi med huvudfunktionen genom att deklarera en variabel med namnet 'x' av typen 'int' och tilldela den värdet 31. Sedan deklareras variabeln 'y' med hjälp av tilldelningsoperatorn ':='. Typen av 'y' bestäms automatiskt från uttrycket på höger sida som är resultatet av att konvertera 'x' till en 'float64'. Så i det här programmet konverteras värdet på 'x' till en 'float64' och tilldelas till 'y'.







Resultaten som hämtas från den grundläggande castingen i Go visas enligt följande:





Exempel 2: Golang Implicit Type Casting

Implicit typgjutning är inte tillåten mellan olika typer. Go upprätthåller stark typning vilket innebär att vi inte direkt kan tilldela eller använda ett värde av en typ som en annan typ utan explicit konvertering. I det följande försöker vi utföra den implicita castingen som genererar undantaget av Go:





paket huvud
importera 'fmt'
func huvud () {
var heltal int = 9 . 08
fmt . Printf ( 'Heltal är %g' , heltal )
}

Här är koden som börjar med main()-funktionen där en 'heltalsvariabel' deklareras med typen 'int'. Värdet som tilldelas variabeln 'heltal' är 9,08 vilket är ett flyttal. Eftersom vi försöker tilldela ett flyttalsvärde direkt till en heltalsvariabel, resulterar det i ett typfel. Sedan använder vi 'printf'-funktionen från 'fmt'-paketet för att skriva ut värdet på 'heltalsvariabeln' med '%g'-formatspecifikationen.

Som förväntat är den implicita typen av gjutning inte acceptabel i Golang. Den tidigare implicita castingen genererar följande fel:



Exempel 3: Golang Explicit Type Casting

Den explicita typkonverteringen gör det möjligt för oss att säkert konvertera värdena mellan kompatibla typer samtidigt som vi uttryckligen anger en avsikt. Det säkerställer att vi är medvetna om typkonverteringen och hjälper till att förhindra oavsiktliga typfel. Tänk på följande explicita casting:

paket huvud
importera 'fmt'

func huvud () {
var floatVal flyta 32 = 6 . 75
var intVal int = int ( floatVal )
fmt . Printf ( 'Flytvärde är %g \n ' , floatVal )
fmt . Printf ( 'Heltalsvärde är %d' , intVal )
}

Här skapas en 'floatVal'-variabel med typen 'float32', och den tilldelas värdet '6.75'. Sedan deklareras en 'intVal'-variabel med typen 'int'. För att tilldela värdet av floatVal till intVal används typkonverteringen. För att omvandla floatVal till ett heltalsvärde används funktionen 'int' med floatVal som indata. Därefter skriver 'fmt.Printf('Flytvärde är %g\n', floatVal)' ut värdet för floatVal med användning av %g-formatspecifikationen som är lämplig för att skriva ut flyttalsvärden. Medan kodraden 'fmt.Printf('Heltalsvärde är %d', intVal)' skriver ut värdet för intVal med användning av %d-formatspecifikationen som är lämplig för att skriva ut heltalsvärdena.

Följande utdata genererar värdena för både floatVal och intVal efter att ha kastat det:

Exempel 4: Casting av golangtyp för att få genomsnittet

Därefter utför vi gjutningen för att få medeltalet från de givna värdena. Låt oss gå igenom källkoden som finns i följande:

paket huvud
importera 'fmt'
func huvud () {
var total int = 900
var Mitt nummer int = tjugo
var genomsnitt flyta 32
genomsnitt = flyta 32 ( total ) / flyta 32 ( Mitt nummer )
fmt . Printf ( 'Genomsnittet är = %f \n ' , genomsnitt )
}

Här deklarerar vi inledningsvis tre variabler. 'Total' är en heltalsvariabel som initieras med värdet 900. 'MyNumber' är en heltalsvariabel som initieras med värdet 20. Det beräknade medelvärdet lagras sedan i variabeln float32 'medelvärde'. Medelformeln ges sedan för att utföra beräkningen. För att säkerställa att divisionen görs som en flyttal, konverteras värdena för 'totalt' och 'Mitt nummer' till flyt32 med hjälp av typkonverteringen. Det beräknade medelvärdet tilldelas variabeln ”genomsnitt”. Slutligen anger formatsträngen '%f\n' som används i 'printf'-funktionen att ett flytvärde ska skrivas ut, följt av ett nyradstecken.

Det resulterande värdet som medelvärde hämtas efter att ha antydt typen av gjutning i föregående kod:

Exempel 5: Golang Int och String Type Casting

Dessutom erbjuder Go även casting mellan Int- och String-typer. Vi kan åstadkomma detta med funktionen för strconv-paketet.

paket huvud
importera (
'fmt'
'strconv'
)
func huvud () {
var str sträng = '1999'
i , _ := strconv . trailer ( s )
fmt . Println ( i )
var heltal int = 1999
toStr := strconv . drunknade ( heltal )

fmt . Println ( toStr )
}

Här är koden som börjar med deklarationen av två variabler. 'str' ​​är en strängvariabel som initieras med värdet '1999' och 'heltal' är en heltalsvariabel som initieras med värdet '1999'. Därefter används 'strconv.Atoi()'-funktionen för att konvertera 'str'-strängen till ett heltalsvärde. Det returnerade värdet på 'v' representerar det konverterade heltal, och den tomma '_' identifieraren används för att ignorera eventuella fel som returneras av Atoi().

Därefter används strconv.Itoa()-funktionen för att transformera heltal till ett strängvärde. Det returnerade värdet som är 'toStr' representerar den konverterade strängen.

Utdata visar konverteringen från '1999'-strängen till ett heltal och tillbaka till en sträng som producerar det ursprungliga värdet för '1999':

Exempel 6: Golang Type Casting Mellan String och Bytes

Dessutom kan gjutning i Go också utföras i sträng- och bytetyper. Följande koder visar omvandlingen mellan strängar och byteskivor:

paket huvud
importera (
'fmt'
)
func huvud () {
var mystr sträng = 'Hallå där'
var b1 [] byte = [] byte ( myStr )
fmt . Println ( b1 )
att stränga := sträng ( b1 )
fmt . Println ( att stränga )
}

Här deklareras variablerna först som 'myStr' och 'b1' som initieras med vissa värden. Sedan konverterar uttrycket []byte(myStr) 'myStr'-strängen till ett bytesegment med hjälp av typkonverteringen. Den tilldelar den resulterande bytedelen till variabeln 'b1'. Efter det konverterar uttrycket 'sträng(b1)' bytedelen b1 tillbaka till en sträng med hjälp av typkonverteringen. Den tilldelar den resulterande strängen till variabeln 'toString'.

Utdata visar omvandlingen mellan 'Hey There'-strängen och dess motsvarande byte-segmentrepresentation i följande:

Exempel 7: Casting av golangtyp för att få kvadratroten

Nu gör vi gjutningen i Go för att hitta kvadratrotsresultaten. Koden är placerad enligt följande:

paket huvud
importera (
'fmt'
'matematik'
)
func huvud () {
var n int = 177
var SqrtN flyta64
SqrtN = matematik . Sqrt ( flyta64 ( n ))
fmt . Printf ( 'Kvadratroten av %d är %.2f \n ' , n , SqrtN )
}

Här deklareras variabeln 'n' som en int och tilldelar värdet '144'. Variabeln “SqrtN” deklareras som en float64 och lagrar den beräknade kvadratroten av “n”. Sedan används funktionen math.Sqrt() för att beräkna kvadratroten ur 'n'. Eftersom math.Sqrt() förväntar sig ett float64-argument, och värdet på “n” konverteras till float64 med float64(n). Därefter anropar formatsträngen 'Kvadratroten av %d är %.2f\n' funktionen 'printf' som anger ett heltalsvärde (%d) och ett flyttalsvärde (%.2f). Precisionsspecifikationen '.2' i '%.2f' säkerställer att kvadratroten skrivs ut med två decimaler.

Följande utdata hämtas som anger kvadratroten av det givna värdet:

Slutsats

Casting in Go diskuteras med distinkta exempel som alla är körbara. Tänk på att i Go är typcasting explicit vilket tvingar fram stark skrivning och främjar kodtydlighet och tillförlitlighet.