Primjeri lijevanja Golanga

Primjeri Lijevanja Golanga



Proces mijenjanja tipa podataka vrijednosti iz jednog tipa u drugi poznat je kao pretvaranje tipa, ponekad poznat i kao konverzija tipa. Pretvorba tipa postiže se u Go-u korištenjem eksplicitnih pretvorbi tipa. Go podržava snažno tipkanje. Stoga, kada pretvaramo između tipova, moramo eksplicitno naznačiti naš cilj. To promiče sigurnost tipkanja i smanjuje vjerojatnost pogrešaka pri tipkanju. U ovom ćemo tekstu istražiti kasting s različitim tipovima u Gou.

Primjer 1: Golang osnovni tip odljeva

Započnimo s primjerom izravnog i osnovnog pretvaranja u Go jer zahtijevamo pretvaranje tipa za izmjenu tipa varijable, bilo gdje.

paket glavni
uvoz (
'fmt'
)
funk glavni () {
bio je x int = 31
i := plovak64 ( x )
fmt . Println ( i )
}

Ovdje započinjemo s glavnom funkcijom deklariranjem varijable pod nazivom 'x' tipa 'int' i dodjeljivanjem joj vrijednosti 31. Zatim se varijabla 'y' deklarira korištenjem skraćenog operatora dodjele ':='. Tip 'y' automatski se određuje iz izraza na desnoj strani koji je rezultat pretvaranja 'x' u 'float64'. Dakle, u ovom programu vrijednost 'x' pretvara se u 'float64' i dodjeljuje se 'y'.







Rezultati koji se dohvaćaju iz osnovnog kastinga u Gou prikazani su na sljedeći način:





Primjer 2: Golang implicitno pretvaranje tipa

Implicitno pretvaranje tipa nije dopušteno između različitih tipova. Go nameće snažno tipiziranje što znači da ne možemo izravno dodijeliti ili koristiti vrijednost jednog tipa kao drugog tipa bez eksplicitne konverzije. U nastavku pokušavamo izvesti implicitno pretvaranje koje generira iznimku pomoću Go-a:





paket glavni
uvoz 'fmt'
funk glavni () {
bio je cijeli broj int = 9 . 08
fmt . Printf ( 'Cijeli broj je %g' , cijeli broj )
}

Evo koda koji počinje s funkcijom main() gdje je varijabla 'integer' deklarirana s tipom 'int'. Vrijednost koja je dodijeljena varijabli 'cijeli broj' je 9,08 što je broj s pomičnim zarezom. Budući da pokušavamo dodijeliti vrijednost pomičnog zareza izravno cjelobrojnoj varijabli, to rezultira pogreškom neusklađenosti tipa. Zatim koristimo funkciju “printf” iz paketa “fmt” za ispis vrijednosti varijable “integer” koristeći specifikator formata “%g”.

Kao što se očekivalo, implicitno pretvaranje tipa nije prihvatljivo u Golangu. Prethodno implicitno pretvaranje tipa generira sljedeću pogrešku:



Primjer 3: Golang eksplicitno pretvaranje tipa

Eksplicitna pretvorba tipa omogućuje nam sigurnu pretvorbu vrijednosti između kompatibilnih tipova uz izričito izražavanje namjere. Osigurava da smo svjesni pretvorbe tipa i pomaže u sprječavanju slučajnih pogrešaka tipa. Razmotrite sljedeće eksplicitno odbacivanje:

paket glavni
uvoz 'fmt'

funk glavni () {
bio je floatVal plovak32 = 6 . 75
bio je intVal int = int ( floatVal )
fmt . Printf ( 'Float vrijednost je %g \n ' , floatVal )
fmt . Printf ( 'Cjelobrojna vrijednost je %d' , intVal )
}

Ovdje se stvara varijabla “floatVal” s tipom “float32” i dodjeljuje joj se vrijednost “6,75”. Zatim se varijabla “intVal” deklarira s tipom “int”. Za dodjelu vrijednosti floatVal intVal-u koristi se pretvorba tipa. Za transformaciju floatVal u cjelobrojnu vrijednost koristi se funkcija 'int' s floatVal kao ulazom. Nakon toga, “fmt.Printf(“Float Value is %g\n”, floatVal)” ispisuje vrijednost floatVal koristeći specifikator formata %g koji je prikladan za ispis vrijednosti s pomičnim zarezom. Dok redak koda “fmt.Printf(“Integer Value is %d”, intVal)” ispisuje vrijednost intVal koristeći specifikator formata %d koji je prikladan za ispis cjelobrojnih vrijednosti.

Sljedeći izlaz generira vrijednosti i za floatVal i za intVal nakon pretvaranja:

Primjer 4: Određivanje tipa Golang za dobivanje prosjeka

Zatim izvodimo kasting kako bismo dobili prosječni broj iz zadanih vrijednosti. Prođimo kroz izvorni kod koji se nalazi u sljedećem:

paket glavni
uvoz 'fmt'
funk glavni () {
bio je ukupno int = 900
bio je Moj broj int = dvadeset
bio je prosjek plovak32
prosjek = plovak32 ( ukupno ) / plovak32 ( Moj broj )
fmt . Printf ( 'Prosjek je = %f \n ' , prosjek )
}

Ovdje početno deklariramo tri varijable. “Ukupno” je cjelobrojna varijabla koja se inicijalizira s vrijednošću 900. “MojBroj” je cjelobrojna varijabla koja se inicijalizira s vrijednošću 20. Izračunati prosjek se zatim pohranjuje u float32 varijabli “prosjek”. Zatim se daje prosječna formula za izračun. Kako bi se osiguralo da se dijeljenje provodi kao dijeljenje s pomičnim zarezom, vrijednosti 'total' i 'MyNumber' pretvaraju se u float32 pomoću pretvorbe tipa. Izračunati prosjek se dodjeljuje varijabli “prosjek”. Naposljetku, niz formata “%f\n” koji se koristi u funkciji “printf” navodi da treba ispisati float vrijednost, nakon koje slijedi znak novog retka.

Rezultirajuća vrijednost kao prosjek dohvaća se nakon impliciranja pretvaranja tipa u prethodnom kodu:

Primjer 5: Golang Int i String Type Casting

Dodatno, Go nudi i prebacivanje između tipova Int i String. To možemo postići pomoću funkcije strconv paketa.

paket glavni
uvoz (
'fmt'
'strconv'
)
funk glavni () {
bio je str niz = '1999'
u , _ := strconv . prikolica ( s )
fmt . Println ( u )
bio je cijeli broj int = 1999. godine
toStr := strconv . utopio se ( cijeli broj )

fmt . Println ( toStr )
}

Evo koda koji počinje deklaracijom dviju varijabli. 'Str' je varijabla niza koja je inicijalizirana vrijednošću '1999', a 'integer' je varijabla cijelog broja koja je inicijalizirana vrijednošću '1999'. Nakon toga, funkcija “strconv.Atoi()” koristi se za pretvaranje niza “str” u cjelobrojnu vrijednost. Vraćena vrijednost 'v' predstavlja pretvoreni cijeli broj, a prazan identifikator '_' koristi se za ignoriranje potencijalne pogreške koju vraća Atoi().

Zatim se koristi funkcija strconv.Itoa() za pretvaranje cijelog broja u vrijednost niza. Vraćena vrijednost koja je 'toStr' predstavlja konvertirani niz.

Izlaz prikazuje pretvorbu iz niza '1999' u cijeli broj i natrag u niz koji daje izvornu vrijednost '1999':

Primjer 6: Prebacivanje tipa Golang između niza i bajtova

Štoviše, kasting u Go također se može izvesti u vrstama nizova i bajtova. Sljedeći kodovi pokazuju pretvorbu između nizova i isječaka bajtova:

paket glavni
uvoz (
'fmt'
)
funk glavni () {
bio je mystr niz = 'Hej tamo'
bio je b1 [] bajt = [] bajt ( myStr )
fmt . Println ( b1 )
toString := niz ( b1 )
fmt . Println ( toString )
}

Ovdje se varijable prvo deklariraju kao “myStr” i “b1” koje se inicijaliziraju određenim vrijednostima. Zatim izraz []byte(myStr) pretvara niz 'myStr' u isječak bajta pomoću pretvorbe tipa. Dodjeljuje rezultirajući isječak bajta varijabli 'b1'. Nakon toga, izraz 'string(b1)' pretvara isječak bajta b1 natrag u niz pomoću pretvorbe tipa. Dodjeljuje rezultirajući niz varijabli 'toString'.

Izlaz prikazuje pretvorbu između niza 'Hey There' i njegovog odgovarajućeg isječka bajta u sljedećem:

Primjer 7: Određivanje tipa Golang za dobivanje kvadratnog korijena

Sada vršimo kasting u Gou kako bismo pronašli rezultate kvadratnog korijena. Kod se postavlja na sljedeći način:

paket glavni
uvoz (
'fmt'
'matematika'
)
funk glavni () {
bio je n int = 177
bio je SqrtN plovak64
SqrtN = matematika . Sqrt ( plovak64 ( n ))
fmt . Printf ( 'Kvadratni korijen od %d je %.2f \n ' , n , SqrtN )
}

Ovdje je varijabla “n” deklarirana kao int i dodjeljuje vrijednost “144”. Varijabla “SqrtN” je deklarirana kao float64 i pohranjuje izračunati kvadratni korijen od “n”. Zatim se primjenjuje funkcija math.Sqrt() za izračun kvadratnog korijena od 'n'. Budući da math.Sqrt() očekuje argument float64, a vrijednost “n” se pretvara u float64 pomoću float64(n). Nakon toga, niz formata 'Kvadratni korijen od %d je %.2f\n' poziva funkciju 'printf' koja navodi vrijednost cijelog broja (%d) i vrijednost s pomičnim zarezom (%.2f). Specifikator preciznosti “.2” u “%.2f” osigurava da se kvadratni korijen ispisuje s dva decimalna mjesta.

Dohvaća se sljedeći izlaz koji označava kvadratni korijen zadane vrijednosti:

Zaključak

O kastingu u Gou govori se s različitim primjerima koji su svi izvršni. Imajte na umu da je u Go-u prikazivanje tipa eksplicitno što nameće snažno tipkanje i promiče jasnoću i pouzdanost koda.