Примери ливења на Голангу

Primeri Livena Na Golangu



Процес промене типа података вредности из једног типа у други познат је као преливање типа, понекад познато као конверзија типа. Пребацивање типа се постиже у Го користећи експлицитне конверзије типова. Го подржава снажно куцање. Стога, када вршимо конверзију између типова, морамо експлицитно назначити наш циљ. Ово промовише безбедност типа и смањује вероватноћу грешака у куцању. У овом тексту ћемо истражити о кастингу са различитим типовима у Го.

Пример 1: Голанг Басиц Типе Цастинг

Почнимо са примером директног и основног преливања у Го-у јер захтевамо примену типа да бисмо модификовали тип променљиве, било где.

пакет главни
увоз (
'фмт'
)
фунц главни () {
био Икс инт = 31
и := флоат64 ( Икс )
фмт . Принтлн ( и )
}

Овде почињемо са главном функцијом тако што декларишемо променљиву под називом „к“ типа „инт“ и додељујемо јој вредност од 31. Затим се променљива „и“ декларише коришћењем скраћеног оператора доделе „:=“. Тип „и“ се аутоматски одређује из израза са десне стране који је резултат претварања „к“ у „флоат64“. Дакле, у овом програму, вредност „к“ се конвертује у „флоат64“ и додељује се „и“.







Резултати који се добијају из основног кастинга у Го-у су приказани на следећи начин:





Пример 2: Голанг имплицитно пребацивање типа

Имплицитно пребацивање типа није дозвољено између различитих типова. Го примењује снажно куцање што значи да не можемо директно да доделимо или користимо вредност једног типа као другог типа без експлицитне конверзије. У наставку покушавамо да извршимо имплицитно превођење које генерише изузетак од стране Го:





пакет главни
увоз 'фмт'
фунц главни () {
био цео број инт = 9 . 08
фмт . Принтф ( „Цео број је %г“ , цео број )
}

Ево кода који почиње функцијом маин() где је променљива „интегер“ декларисана са типом „инт“. Вредност која је додељена „целобројној“ променљивој је 9,08 што је број са покретним зарезом. Пошто покушавамо да доделимо вредност са покретним зарезом директно целобројној променљивој, то резултира грешком неподударања типа. Затим користимо функцију “принтф” из пакета “фмт” да одштампамо вредност променљиве “интегер” користећи спецификацију формата “%г”.

Као што се и очекивало, имплицитно пребацивање типа није прихватљиво у Голангу. Претходно имплицитно пребацивање типа генерише следећу грешку:



Пример 3: Голанг експлицитно пребацивање типа

Експлицитна конверзија типа нам омогућава да безбедно конвертујемо вредности између компатибилних типова уз експлицитно навођење намере. То осигурава да смо свесни конверзије типа и помаже у спречавању случајних грешака у типу. Размотрите следеће експлицитно преливање:

пакет главни
увоз 'фмт'

фунц главни () {
био флоатВал флоат32 = 6 . 75
био интВал инт = инт ( флоатВал )
фмт . Принтф ( „Флоат вредност је %г ' , флоатВал )
фмт . Принтф ( „Целобројна вредност је %д“ , интВал )
}

Овде се креира променљива „флоатВал“ са типом „флоат32“ и додељује јој се вредност „6,75“. Затим се декларише променљива „интВал“ са типом „инт“. Да би се вредност флоатВал доделила интВал, користи се конверзија типа. За трансформацију флоатВал у целобројну вредност, функција „инт“ се користи са флоатВал као улазом. Након тога, „фмт.Принтф(“Флоат Валуе ис %г\н”, флоатВал)” штампа вредност флоатВал користећи спецификацију формата %г који је погодан за штампање вредности са покретним зарезом. Док линија кода „фмт.Принтф(“Интегер Валуе ис %д”, интВал)” штампа вредност интВал користећи спецификацију формата %д који је погодан за штампање целобројних вредности.

Следећи излаз генерише вредности и за флоатВал и за интВал након његовог извођења:

Пример 4: Голанг Типе Цастинг да бисте добили просек

Затим вршимо ливење да бисмо добили просечан број из датих вредности. Хајде да прођемо кроз изворни код који се налази у следећем:

пакет главни
увоз 'фмт'
фунц главни () {
био укупно инт = 900
био Мој број инт = двадесет
био просек флоат32
просек = флоат32 ( укупно ) / флоат32 ( Мој број )
фмт . Принтф ( „Просек је = %ф ' , просек )
}

Овде у почетку декларишемо три променљиве. „Тотал“ је целобројна променљива која се иницијализује вредношћу 900. „МиНумбер“ је целобројна променљива која се иницијализује вредношћу 20. Израчунати просек се затим чува у променљивој „просек“ флоат32. Затим се даје просечна формула за израчунавање. Да би се осигурало да се дељење врши као дељење са помичним зарезом, вредности „тотал“ и „МиНумбер“ се конвертују у флоат32 помоћу конверзије типа. Израчунати просек се додељује променљивој „просек“. Коначно, стринг формата „%ф\н“ који се користи у функцији „принтф“ наводи да треба да се одштампа вредност са плутајућим бројем, праћена знаком за нови ред.

Резултујућа вредност као просек се преузима након што се имплицира преливање типа у претходном коду:

Пример 5: Голанг Инт и Стринг Типе Цастинг

Поред тога, Го такође нуди пребацивање између типова Инт и Стринг. То можемо постићи помоћу функције стрцонв пакета.

пакет главни
увоз (
'фмт'
'стрцонв'
)
фунц главни () {
био стр низ = '1999'
ин , _ := стрцонв . приколица ( с )
фмт . Принтлн ( ин )
био цео број инт = 1999
тоСтр := стрцонв . удављен ( цео број )

фмт . Принтлн ( тоСтр )
}

Ево кода који почиње декларацијом две променљиве. „стр“ је променљива низа која је иницијализована вредношћу „1999“, а „цео број“ је целобројна променљива која се иницијализује вредношћу „1999“. Након тога, функција „стрцонв.Атои()“ се користи за претварање стринга „стр“ у целобројну вредност. Враћена вредност „в“ представља конвертовани цео број, а празан идентификатор „_“ се користи да игнорише сваку потенцијалну грешку коју враћа Атои().

Затим, функција стрцонв.Итоа() се користи за трансформацију целог броја у вредност низа. Враћена вредност која је „тоСтр“ представља конвертовани низ.

Излаз приказује конверзију из стринга „1999“ у цео број и назад у стринг који производи оригиналну вредност „1999“:

Пример 6: Пребацивање типа Голанг између стринга и бајтова

Штавише, кастинг у Го такође може да се изведе у низовима и бајтовима. Следећи кодови показују конверзију између стрингова и резова бајтова:

пакет главни
увоз (
'фмт'
)
фунц главни () {
био мистр низ = 'Хеј тамо'
био б1 [] бајт = [] бајт ( миСтр )
фмт . Принтлн ( б1 )
тоСтринг := низ ( б1 )
фмт . Принтлн ( тоСтринг )
}

Овде су променљиве прво декларисане као „миСтр“ и „б1“ које су иницијализоване одређеним вредностима. Затим, израз []бите(миСтр) конвертује стринг „миСтр“ у одсјечак бајтова користећи конверзију типа. Он додељује резултујући одсек бајта променљивој „б1“. Након тога, израз „стринг(б1)“ конвертује исечак бајта б1 назад у стринг користећи конверзију типа. Он додељује резултујући низ променљивој „тоСтринг“.

Излаз показује конверзију између стринга „Хеј тамо“ и његовог одговарајућег приказа бајтова у следећем:

Пример 7: Голанг типа Цастинг да бисте добили квадратни корен

Сада радимо кастинг у Го да бисмо пронашли резултате квадратног корена. Код је постављен на следећи начин:

пакет главни
увоз (
'фмт'
'математика'
)
фунц главни () {
био н инт = 177
био СкртН флоат64
СкртН = матх . Скрт ( флоат64 ( н ))
фмт . Принтф ( „Квадратни корен од %д је %.2ф ' , н , СкртН )
}

Овде је променљива „н“ декларисана као инт и додељује вредност „144“. Променљива „СкртН“ је декларисана као флоат64 и чува израчунати квадратни корен од „н“. Затим, функција матх.Скрт() се примењује да израчуна квадратни корен од „н“. Пошто матх.Скрт() очекује аргумент флоат64, а вредност „н” се конвертује у флоат64 користећи флоат64(н). Након тога, стринг формата „Квадратни корен од %д је %.2ф\н“ позива у функцији „принтф“ која специфицира целобројну вредност (%д) и вредност са покретним зарезом (%.2ф). Спецификатор прецизности „.2“ у „%.2ф“ обезбеђује да се квадратни корен штампа са две децимале.

Добија се следећи излаз који указује на квадратни корен дате вредности:

Закључак

Кастинг у Го је разматран са различитим примерима који су сви извршни. Имајте на уму да је у Го-у примену типова експлицитно што намеће снажно куцање и промовише јасноћу и поузданост кода.