Golango liejimo pavyzdžiai

Golango Liejimo Pavyzdziai



Vertės duomenų tipo keitimo iš vieno tipo į kitą procesas yra žinomas kaip tipo liejimas, kartais vadinamas tipo konvertavimu. Tipo perdavimas atliekamas naudojant „Go“, naudojant aiškias tipo konversijas. Go palaiko stiprų spausdinimą. Taigi, konvertuodami tarp tipų, turime aiškiai nurodyti savo tikslą. Tai padidina rašymo saugumą ir sumažina spausdinimo klaidų tikimybę. Šiame rašte mes išnagrinėsime, kaip atleisti naudojant įvairius Go tipus.

1 pavyzdys: Golango pagrindinio tipo liejimas

Pradėkime nuo tiesioginio ir pagrindinio „Go“ perdavimo pavyzdžio, nes norint bet kur pakeisti kintamojo tipą, mums reikia tipo perdavimo.

paketą pagrindinis
importuoti (
'fmt'
)
func pagrindinis () {
buvo x tarpt = 31
ir := plūdė64 ( x )
fmt . Println ( ir )
}

Čia mes pradedame nuo pagrindinės funkcijos, deklaruodami kintamąjį, pavadintą „x“, kurio tipas yra „int“, ir priskirdami jam reikšmę 31. Tada kintamasis „y“ deklaruojamas naudojant sutrumpinimo priskyrimo operatorių „:=“. „Y“ tipas automatiškai nustatomas pagal išraišką dešinėje pusėje, kuri yra „x“ konvertavimo į „float64“ rezultatas. Taigi šioje programoje „x“ reikšmė konvertuojama į „float64“ ir priskiriama „y“.







Rezultatai, gauti iš pagrindinio atliejimo naudojant Go, rodomi taip:





2 pavyzdys: Golang implicit Type Casting

Netiesioginio tipo liejimas tarp skirtingų tipų neleidžiamas. „Go“ naudoja griežtą įvedimą, o tai reiškia, kad negalime tiesiogiai priskirti ar naudoti vieno tipo vertės kaip kito tipo be aiškios konversijos. Toliau bandome atlikti netiesioginį perdavimą, kuris sukuria Go išimtį:





paketą pagrindinis
importuoti 'fmt'
func pagrindinis () {
buvo sveikasis skaičius tarpt = 9 . 08
fmt . Printf ( 'Sveikasis skaičius yra %g' , sveikasis skaičius )
}

Štai kodas, kuris prasideda funkcija main(), kur „integer“ kintamasis deklaruojamas „int“ tipu. „Sveiko skaičiaus“ kintamajam priskirta vertė yra 9,08, o tai yra slankiojo kablelio skaičius. Kadangi bandome tiesiogiai priskirti slankiojo kablelio reikšmę sveikajam kintamajam, atsiranda tipo neatitikimo klaida. Tada mes naudojame funkciją 'printf' iš 'fmt' paketo, kad atspausdintume 'integer' kintamojo reikšmę naudodami '%g' formato specifikaciją.

Kaip ir tikėtasi, numanomo tipo liejimas Golange nepriimtinas. Ankstesnis numanomo tipo liejimas sukuria šią klaidą:



3 pavyzdys: „Golang Explicit Type“ perdavimas

Aiškus tipo konvertavimas leidžia saugiai konvertuoti reikšmes tarp suderinamų tipų, aiškiai nurodant ketinimą. Tai užtikrina, kad žinome apie tipo konvertavimą ir padeda išvengti atsitiktinių tipo klaidų. Apsvarstykite šį aiškų liejimą:

paketą pagrindinis
importuoti 'fmt'

func pagrindinis () {
buvo floatVal plūdė32 = 6 . 75
buvo intVal tarpt = tarpt ( floatVal )
fmt . Printf ( „Slankioji vertė yra %g \n , floatVal )
fmt . Printf ( 'Sveikasis skaičius yra %d' , intVal )
}

Čia sukuriamas „floatVal“ kintamasis, kurio tipas yra „float32“, ir jam priskiriama „6,75“ reikšmė. Tada „intVal“ kintamasis deklaruojamas „int“ tipu. Norint priskirti floatVal reikšmę intVal, naudojama tipo konvertavimas. Norint paversti floatVal į sveikąjį skaičių, funkcija „int“ naudojama su floatVal įvestimi. Po to 'fmt.Printf('Float Value yra %g\n', floatVal)' atspausdina floatVal reikšmę naudodamas %g formato specifikatorių, kuris tinkamas slankiojo kablelio reikšmėms spausdinti. Nors „fmt.Printf“ („Sveikasis skaičius yra %d“, intVal)“ kodo eilutė spausdina intVal reikšmę naudodama %d formato specifikaciją, kuri tinka sveikųjų skaičių reikšmėms spausdinti.

Ši išvestis generuoja floatVal ir intVal reikšmes po jų perdavimo:

4 pavyzdys: „Golang“ tipo perdavimas norint gauti vidurkį

Toliau atliekame liejimą, kad gautume vidutinį skaičių iš pateiktų verčių. Peržiūrėkime šaltinio kodą, pateiktą toliau:

paketą pagrindinis
importuoti 'fmt'
func pagrindinis () {
buvo viso tarpt = 900
buvo Mano numeris tarpt = dvidešimt
buvo vidutinis plūdė32
vidutinis = plūdė32 ( viso ) / plūdė32 ( Mano numeris )
fmt . Printf ( 'Vidurkis yra = %f \n , vidutinis )
}

Čia iš pradžių deklaruojame tris kintamuosius. „Total“ yra sveikasis kintamasis, kuris inicijuojamas reikšme 900. „MyNumber“ yra sveikasis kintamasis, kuris inicijuojamas reikšme 20. Tada apskaičiuotas vidurkis išsaugomas float32 „average“ kintamajame. Tada skaičiavimui atlikti pateikiama vidutinė formulė. Siekiant užtikrinti, kad padalijimas būtų atliekamas kaip slankiojo kablelio padalijimas, „total“ ir „MyNumber“ reikšmės konvertuojamos į float32 naudojant tipo konvertavimą. Apskaičiuotas vidurkis priskiriamas kintamajam „vidurkis“. Galiausiai „%f\n“ formato eilutė, naudojama „printf“ funkcijoje, nurodo, kad turi būti spausdinama slankioji reikšmė, o po jos – naujos eilutės simbolis.

Gauta reikšmė kaip vidurkis gaunama nurodant tipo liejimą ankstesniame kode:

5 pavyzdys: Golang Int ir String Type Casting

Be to, Go taip pat siūlo liejimą tarp Int ir String tipų. Tai galime padaryti naudodami strconv paketo funkciją.

paketą pagrindinis
importuoti (
'fmt'
'strconv'
)
func pagrindinis () {
buvo g styga = '1999'
in , _ := strconv . priekaba ( s )
fmt . Println ( in )
buvo sveikasis skaičius tarpt = 1999 m
toStr := strconv . nuskendo ( sveikasis skaičius )

fmt . Println ( toStr )
}

Štai kodas, kuris prasideda dviejų kintamųjų deklaravimu. „str“ yra eilutės kintamasis, kuris inicijuojamas reikšme „1999“, o „integer“ yra sveikasis skaičius, kuris inicijuojamas reikšme „1999“. Po to funkcija „strconv.Atoi()“ naudojama „str“ eilutei konvertuoti į sveikąjį skaičių. Grąžinta „v“ reikšmė reiškia konvertuotą sveikąjį skaičių, o tuščias „_“ identifikatorius naudojamas ignoruoti bet kokią galimą klaidą, kurią grąžina Atoi().

Tada funkcija strconv.Itoa() naudojama sveikajam skaičiui transformuoti į eilutės reikšmę. Grąžinama vertė, kuri yra „toStr“, reiškia konvertuotą eilutę.

Išvestis rodo konvertavimą iš eilutės „1999“ į sveikąjį skaičių ir atgal į eilutę, kuri sukuria pradinę „1999“ reikšmę:

6 pavyzdys: Golang tipo perdavimas tarp eilutės ir baitų

Be to, „Go“ liejimas taip pat gali būti atliekamas eilučių ir baitų tipais. Šie kodai rodo konvertavimą tarp eilučių ir baitų skilčių:

paketą pagrindinis
importuoti (
'fmt'
)
func pagrindinis () {
buvo mystr styga = 'Labas'
buvo b1 [] baitas = [] baitas ( myStr )
fmt . Println ( b1 )
toString := styga ( b1 )
fmt . Println ( toString )
}

Čia kintamieji pirmiausia deklaruojami kaip „myStr“ ir „b1“, kurie inicijuojami tam tikromis reikšmėmis. Tada []byte(myStr) išraiška konvertuoja „myStr“ eilutę į baitų skiltį, naudodama tipo konvertavimą. Gautą baito dalį ji priskiria kintamajam „b1“. Po to „string(b1)“ išraiška konvertuoja baitų dalį b1 atgal į eilutę, naudodama tipo konvertavimą. Gautą eilutę ji priskiria kintamajam „toString“.

Išvestis rodo konvertavimą tarp eilutės „Hey There“ ir jos atitinkamo baito pjūvio atvaizdavimo:

7 pavyzdys: Golang tipo liejimas, norint gauti kvadratinę šaknį

Dabar mes atliekame liejimą naudodami Go, kad surastume kvadratinės šaknies rezultatus. Kodas dedamas taip:

paketą pagrindinis
importuoti (
'fmt'
'matematika'
)
func pagrindinis () {
buvo n tarpt = 177
buvo SqrtN plūdė64
SqrtN = matematika . Sqrt ( plūdė64 ( n ))
fmt . Printf ( „%d kvadratinė šaknis yra %.2f \n , n , SqrtN )
}

Čia „n“ kintamasis deklaruojamas kaip int ir priskiria reikšmę „144“. Kintamasis „SqrtN“ deklaruojamas kaip float64 ir išsaugo apskaičiuotą „n“ kvadratinę šaknį. Tada funkcija math.Sqrt() naudojama norint apskaičiuoti „n“ kvadratinę šaknį. Kadangi math.Sqrt() tikisi float64 argumento, o „n“ reikšmė konvertuojama į float64 naudojant float64(n). Po to „%d kvadratinė šaknis yra %.2f\n“ iškviečia formato eilutę „printf“ funkcijoje, kuri nurodo sveikojo skaičiaus reikšmę (%d) ir slankiojo kablelio reikšmę (%.2f). „.2“ tikslumo aprašas „%.2f“ užtikrina, kad kvadratinė šaknis būtų spausdinama dviem skaitmenimis po kablelio.

Gaunama tokia išvestis, kuri nurodo duotosios vertės kvadratinę šaknį:

Išvada

„Go“ atkūrimas aptariamas pateikiant skirtingus pavyzdžius, kurie visi yra vykdomi. Atminkite, kad „Go“ yra aiškus teksto siuntimas, kuris užtikrina tvirtą spausdinimą ir skatina kodo aiškumą bei patikimumą.