Esimerkkejä Golangin valusta

Esimerkkeja Golangin Valusta



Prosessi, jolla arvon tietotyyppiä muutetaan tyypistä toiseen, tunnetaan nimellä tyyppivalu, joka tunnetaan joskus nimellä tyyppimuunnos. Tyyppisuorat suoritetaan Go-sovelluksessa käyttämällä eksplisiittisiä tyyppimuunnoksia. Go tukee vahvaa kirjoittamista. Siten, kun muunnamme tyyppien välillä, meidän on osoitettava selkeästi tavoitteemme. Tämä edistää kirjoitusturvallisuutta ja vähentää kirjoitusvirheiden todennäköisyyttä. Tässä kirjoituksessa tutkimme eri tyyppien heittämistä Gossa.

Esimerkki 1: Golangin perustyyppinen valu

Aloitetaan esimerkillä suorasta ja perussuorasta Go:ssa, koska vaadimme typecastingia muuttaaksemme muuttujan tyyppiä missä tahansa.

paketti pää
tuonti (
'fmt'
)
func pää () {
oli x int = 31
ja := kellua64 ( x )
fmt . Println ( ja )
}

Tässä aloitetaan pääfunktiosta ilmoittamalla muuttuja nimeltä “x”, jonka tyyppi on “int” ja määritettävä sille arvo 31. Tämän jälkeen muuttuja “y” määritetään käyttämällä lyhennettyä määritysoperaattoria “:=”. 'Y':n tyyppi määritetään automaattisesti oikealla olevasta lausekkeesta, joka on tulos 'x':n muuntamisesta 'float64':ksi. Joten tässä ohjelmassa 'x':n arvo muunnetaan 'float64':ksi ja sille annetaan 'y'.







Go:n perussuorituksesta haetut tulokset näkyvät seuraavasti:





Esimerkki 2: Golangin implisiittisen tyypin Casting

Implisiittinen tyyppivalu ei ole sallittu eri tyyppien välillä. Go pakottaa voimakkaan kirjoittamisen, mikä tarkoittaa, että emme voi suoraan määrittää tai käyttää yhden tyypin arvoa toisena tyyppinä ilman nimenomaista muuntamista. Seuraavassa yritämme suorittaa implisiittisen suoratoiston, joka luo Go:n poikkeuksen:





paketti pää
tuonti 'fmt'
func pää () {
oli kokonaisluku int = 9 . 08
fmt . Printf ( 'Kokonaisluku on %g' , kokonaisluku )
}

Tässä on koodi, joka alkaa main()-funktiolla, jossa 'integer'-muuttuja ilmoitetaan 'int'-tyypillä. 'Integer'-muuttujalle annettu arvo on 9,08, joka on liukuluku. Koska yritämme määrittää liukulukuarvon suoraan kokonaislukumuuttujalle, se johtaa tyyppivirheeseen. Sitten käytämme 'fmt'-paketin 'printf'-funktiota 'integer'-muuttujan arvon tulostamiseen '%g'-muotomääritteen avulla.

Kuten odotettiin, implisiittinen tyyppivalu ei ole hyväksyttävä Golangissa. Edellinen implisiittisen tyypin valu luo seuraavan virheen:



Esimerkki 3: Golang Explicit Type Casting

Eksplisiittisen tyyppimuunnoksen avulla voimme turvallisesti muuntaa arvot yhteensopivien tyyppien välillä samalla, kun ilmaisemme selkeästi aikomuksen. Se varmistaa, että olemme tietoisia tyyppimuunnoksesta ja auttaa estämään vahingossa tapahtuvat tyyppivirheet. Harkitse seuraavaa selkeää suoratoistoa:

paketti pää
tuonti 'fmt'

func pää () {
oli floatVal kellua32 = 6 . 75
oli intVal int = int ( floatVal )
fmt . Printf ( 'Float Value on %g \n ' , floatVal )
fmt . Printf ( 'Kokonaislukuarvo on %d' , intVal )
}

Täällä luodaan 'floatVal'-muuttuja, jonka tyyppi on 'float32', ja sille annetaan arvo '6.75'. Sitten 'intVal'-muuttuja ilmoitetaan 'int'-tyypillä. FloatVal:n arvon määrittämiseksi intVal:lle käytetään tyypin muuntamista. FloatVal-arvon muuttamiseksi kokonaisluvuksi käytetään 'int'-funktiota floatVal-syötteenä. Sen jälkeen 'fmt.Printf('Float Value on %g\n', floatVal)' tulostaa floatVal:n arvon %g-muotomääritteen avulla, joka sopii liukulukuarvojen tulostamiseen. Kun 'fmt.Printf('Kokonaislukuarvo on %d', intVal)' -koodirivi tulostaa intVal:n arvon %d-muotomääritteen avulla, joka sopii kokonaislukuarvojen tulostamiseen.

Seuraava tulos luo sekä floatVal- että intVal-arvot sen lähettämisen jälkeen:

Esimerkki 4: Golang Type Casting saadaksesi keskiarvon

Seuraavaksi suoritamme valun, jotta saadaan keskimääräinen luku annetuista arvoista. Käydään läpi seuraava lähdekoodi:

paketti pää
tuonti 'fmt'
func pää () {
oli kaikki yhteensä int = 900
oli Numeroni int = kaksikymmentä
oli keskiverto kellua32
keskiverto = kellua32 ( kaikki yhteensä ) / kellua32 ( Numeroni )
fmt . Printf ( 'Keskiarvo on = %f \n ' , keskiverto )
}

Tässä ilmoitamme aluksi kolme muuttujaa. 'Total' on kokonaislukumuuttuja, joka alustetaan arvolla 900. 'MyNumber' on kokonaislukumuuttuja, joka alustetaan arvolla 20. Laskettu keskiarvo tallennetaan sitten float32 'average'-muuttujaan. Keskimääräinen kaava annetaan sitten laskennan suorittamista varten. Sen varmistamiseksi, että jako tehdään liukulukujakolana, 'total'- ja 'MyNumber'-arvot muunnetaan float32:ksi tyyppimuunnoksen avulla. Laskettu keskiarvo määrätään muuttujalle 'keskiarvo'. Lopuksi '%f\n'-muotoinen merkkijono, jota käytetään 'printf'-funktiossa, määrittää, että kelluva arvo tulee tulostaa ja sen jälkeen rivinvaihtomerkki.

Tuloksena oleva arvo keskiarvona noudetaan sen jälkeen, kun edellisessä koodissa on esitetty tyyppivalu:

Esimerkki 5: Golang Int ja String Type Casting

Lisäksi Go tarjoaa myös suoratoistoa Int- ja String-tyyppien välillä. Voimme suorittaa tämän käyttämällä strconv-paketin toimintoa.

paketti pää
tuonti (
'fmt'
'strconv'
)
func pää () {
oli str merkkijono = '1999'
sisään , _ := strconv . traileri ( s )
fmt . Println ( sisään )
oli kokonaisluku int = 1999
toStr := strconv . hukkunut ( kokonaisluku )

fmt . Println ( toStr )
}

Tässä on koodi, joka alkaa kahden muuttujan ilmoittamisella. 'str' ​​on merkkijonomuuttuja, joka alustetaan arvolla '1999' ja 'integer' on kokonaislukumuuttuja, joka alustetaan arvolla '1999'. Sen jälkeen 'strconv.Atoi()'-funktiota käytetään muuttamaan 'str'-merkkijono kokonaislukuarvoksi. Palautettu arvo 'v' edustaa muunnettua kokonaislukua, ja tyhjää '_' -tunnusta käytetään ohittamaan mahdolliset Atoi(:n) palauttamat virheet.

Seuraavaksi strconv.Itoa()-funktiota käytetään muuttamaan kokonaisluku merkkijonoarvoksi. Palautettu arvo, joka on 'toStr', edustaa muunnettua merkkijonoa.

Tulos näyttää muunnoksen '1999'-merkkijonosta kokonaisluvuksi ja takaisin merkkijonoksi, joka tuottaa alkuperäisen arvon '1999':

Esimerkki 6: Golang-tyypin suoratoisto merkkijonon ja tavujen välillä

Lisäksi Go:n valu voidaan suorittaa myös merkkijono- ja tavutyypeissä. Seuraavat koodit osoittavat muunnoksen merkkijonojen ja tavuviipaleiden välillä:

paketti pää
tuonti (
'fmt'
)
func pää () {
oli mystr merkkijono = 'Hei siellä'
oli b1 [] tavu = [] tavu ( myStr )
fmt . Println ( b1 )
toString := merkkijono ( b1 )
fmt . Println ( toString )
}

Tässä muuttujat ilmoitetaan ensin 'myStr' ja 'b1', jotka alustetaan tietyillä arvoilla. Sitten []byte(myStr) -lauseke muuntaa 'myStr'-merkkijonon tavuviipaleeksi käyttämällä tyyppimuunnosa. Se määrittää tuloksena olevan tavuviipaleen 'b1'-muuttujalle. Sen jälkeen 'string(b1)' -lauseke muuntaa tavuviipaleen b1 takaisin merkkijonoksi tyyppimuunnoksen avulla. Se määrittää tuloksena olevan merkkijonon 'toString'-muuttujaan.

Tulos näyttää muunnoksen 'Hey There' -merkkijonon ja sitä vastaavan tavuviipaleesityksen välillä seuraavassa:

Esimerkki 7: Golang Type Casting neliöjuuren saamiseksi

Nyt suoritamme valun Go-ohjelmalla neliöjuuren tulosten löytämiseksi. Koodi sijoitetaan seuraavasti:

paketti pää
tuonti (
'fmt'
'matematiikka'
)
func pää () {
oli n int = 177
oli SqrtN kellua64
SqrtN = matematiikka . Sqrt ( kellua64 ( n ))
fmt . Printf ( '%d:n neliöjuuri on %.2f \n ' , n , SqrtN )
}

Tässä muuttuja 'n' ilmoitetaan int-muuttujana ja antaa arvon '144'. 'SqrtN'-muuttuja ilmoitetaan float64:nä ja tallentaa 'n':n lasketun neliöjuuren. Sitten math.Sqrt()-funktio otetaan käyttöön laskemaan 'n' neliöjuuren. Koska math.Sqrt() odottaa float64-argumentin, ja arvo 'n' muunnetaan float64:ksi käyttämällä float64(n). Sen jälkeen '%d:n neliöjuuri on %.2f\n'-muotoinen merkkijono kutsuu 'printf'-funktiossa, joka määrittää kokonaisluvun (%d) ja liukulukuarvon (%.2f). '.2':n tarkkuusmäärittäjä '%.2f' varmistaa, että neliöjuuri tulostetaan kahdella desimaalilla.

Haetaan seuraava tulos, joka osoittaa annetun arvon neliöjuuren:

Johtopäätös

Casting in Go käsitellään erillisillä esimerkeillä, jotka kaikki ovat suoritettavissa. Muista, että Go:ssa typecasting on eksplisiittistä, mikä pakottaa voimakkaan kirjoittamisen ja edistää koodin selkeyttä ja luotettavuutta.