Исправно форматирање бројева може бити тежак задатак. А форматирање валута доноси додатне изазове који укључују локализацију. На срећу, Го има функције које ће вам помоћи.
Го стандардна библиотека пружа различите алате за форматирање бројева. Пакет стрцонв укључује функције за рашчлањивање и претварање бројева у низове и из њих.
Пакет стрцонв
Тхе стрцонв пакет је моћан алат за конверзију између бројева и низова. Можете га користити за рад са бројевима у различитим форматима.
стрцонв је део стандардне библиотеке, тако да је релевантан за многе од основни Го концепти са којима бисте требали бити упознати. Ево како можете да га увезете:
увоз"стрцонв"
Пакет пружа функције за претварање бројева у низове и из њих у различитим форматима. Садржи функције за рад са целим бројевима и бројевима са покретним зарезом.
стрцонв такође може да обрађује конверзију у и из бинарних, окталних и хексадецималних формата, као и научне записе.
Форматирање целих бројева у Го
Пакет стрцонв Итоа функција пружа функционалност за претварање целих бројева у низове. Тхе Итоа функција узима цео број и враћа стринг репрезентацију тог целог броја.
увоз (
"фмт"
"стрцонв"
)
фунцглавни() {
цели бројеви := 3043
стрингВерсион := стрцонв. Итоа (цели бројеви)
фмт. Принтлн (стрингВерсион) // Излаз: "3043"
}
Овај код конвертује целобројну вредност у стринг користећи Итоа. Затим емитује резултујући стринг на конзолу користећи фмт пакет.
Поред већ Итоа функција, стрцонв обезбеђује:
- ФорматИнт за форматирање целих бројева као стрингова са датом основом
- АппендИнт за додавање целих бројева у облику стринга на парче бајтова.
Ево како можете да користите ФорматИнт функција за форматирање целог броја:
увоз (
"фмт"
"стрцонв"
)
фунцглавни() {
цели бројеви := 12345
стрингс := стрцонв. ФорматИнт(инт64(цели бројеви), 10)
фмт. Принтлн (стрингови) // Излаз: "12345"
}
Овај код користи инт64() да конвертујете оригиналну вредност у 64-битни цео број. Затим преноси резултат на ФорматИнт, заједно са основом за конверзију, у овом случају 10. ФорматИнт враћа стринг који Принтлн затим излази на конзолу.
Тхе АппендИнт функција заузима део бајта, ан инт64 вредност и основу.
увоз (
"фмт"
"стрцонв"
)
фунцглавни() {
цели бројеви := 12345
битеСлице := направити([]бајт, 0, 20)
битеСлице = стрцонв. АппендИнт (битеСлице, инт64(цели бројеви), 10)
фмт. Принтлн(низ(битеСлице)) // Излаз: "12345"
}
Имајте на уму да АппендИнт прима исечак бајтова за додавање и враћа резултујући одсек бајта. У овом случају, почетни бајт исечак је празан, али има капацитет од 20 за складиштење резултујуће стринг репрезентације целог броја.
Рашчлањивање стрингова као целих бројева
Тхе Атои функција претвара стрингове у целе бројеве. Узима стринг као улаз и враћа целобројну репрезентацију тог стринга заједно са типом грешке.
Ево како можете да користите Атои функција за конверзију низа у цео број:
увоз (
"фмт"
"стрцонв"
)фунцглавни() {
стрингс := "123"
цели бројеви, грешка := стрцонв. Атои (жице)ако ерр != нула {
фмт. Принтлн (грешка)
}
фмт. Принтлн (цели бројеви)
}
Програм шаље целобројну вредност на конзолу:
Такође можете користити ПарсеУинт функција за рашчлањивање стрингова приказа целих бројева без предзнака.
пакет главни
увоз (
"фмт"
"стрцонв"
)фунцглавни() {
// рашчлани стринг као основни 10 и 0-битни цели број без предзнака
вал, ерр := стрцонв. ПарсеУинт("12345", 10, 0)
ако ерр != нула {
фмт. Принтлн (грешка)
} друго {
фмт. Принтлн (вал) // Излаз: 12345
}
}
Тхе ПарсеУинт функција анализира стринг 12345 као основни десет, неозначени цео број. Величина 0-бита осигурава да враћа стандардни тип инт. Враћа рашчлањену вредност и грешку.
Можете користити ПарсеФлоат функција за рашчлањивање стринг репрезентације броја са покретним зарезом.
увоз (
"фмт"
"стрцонв"
)фунцглавни() {
// анализира стринг као 64-битни број са помичним зарезом
вал, ерр := стрцонв. ПарсеФлоат("3.14", 64)
ако ерр != нула {
фмт. Принтлн (грешка)
} друго {
фмт. Принтлн (вал) // Излаз: 3.14
}
}
Тхе ПарсеФлоат функција анализира стринг као 64-битни број са покретним зарезом и враћа стринг и тип грешке.
Форматирање валута у Го
Прављење апликације која је у интеракцији са валутама захтева форматирање бројева и рашчлањивање. Рад са различитим валутама може бити изазов, али стрцонв и рачуноводство пакети вам могу помоћи да их форматирате.
Ево како можете рашчланити низ валуте у флоат за операције на валути:
увоз (
"фмт"
"стрцонв"
)фунцглавни() {
// Низ валуте за рашчлањивање
валутаСтр := "$1,234.56"// Уклоните симбол валуте и претворите у флоат
флоатВал, ерр := стрцонв. ПарсеФлоат (цурренциСтр[1:], 64)ако ерр != нула {
фмт. Принтлн (грешка)
повратак
}
// Штампа рашчлањену флоат вредност
фмт. Принтлн (флоатВал) // Излаз: 1234.56
}
Тхе цурренциСтр променљива је стринг репрезентација вредности валуте са знаком долара као симболом. Програм користи ПарсеФлоат функција за рашчлањивање низа валуте почевши од другог елемента (после симбола валуте).
Конвенционално, најбоље је избегавати коришћење флоат-а за валуте јер могу довести до погрешних прорачуна и грешака у производњи.
Алтернативно, можете користити пакет треће стране као што је рачуноводство који има функционалност за форматирање и рашчлањивање валута.
Покрените ову терминалну команду у директоријуму вашег пројекта да бисте инсталирали рачуноводствени пакет:
идите на гитхуб.цом/леекцхан/аццоунтинг
Започните креирањем инстанце Рачуноводство струцт. Подсетимо се да су структуре једна од Основне објектно оријентисане функције Го, слично часовима из других језика. Можете иницијализовати инстанцу рачуноводства са симболом валуте и прецизном вредношћу, између осталих опција.
Можете користити ФорматМонеи функција рачуноводственог пакета за форматирање бројева у валуте.
пакет главни
увоз (
"фмт"
"математика/велика"„гитхуб.цом/леекцхан/аццоунтинг“
)
фунцглавни() {
ац := рачуноводство. Рачуноводство{Симбол: "$", Прецизност: 2}
фмт. Принтлн (ац. ФорматМонеи(123456789.213123))
фмт. Принтлн (ац. ФорматМонеи(12345678))
фмт. Принтлн (ац. ФорматМонеи (велики. НевРат(77777777, 3)))
фмт. Принтлн (ац. ФорматМонеи (велики. НевРат(-77777777, 3)))
фмт. Принтлн (ац. ФорматМонеиБигФлоат (велики. НевФлоат(123456789.213123)))
}
Тхе ац променљива је рачуноводствена инстанца. Овај програм форматира и штампа новчане вредности користећи ФорматМонеи и ФорматМонеиБигФлоат методе рачуноводствене инстанце. Тхе НевРат функција из велики пакет ствара рационални број који има бројилац и именилац. Тхе НевФлоат функција помаже у представљању великих бројева са покретним зарезом.
Го вам може помоћи да форматирате и друге типове
Го пружа мноштво функција за конвертовање бројева и валута на једноставан начин.
Језик такође нуди моћан систем форматирања стрингова. Функција Спринтф инспирисана Ц-ом фмт пакета вам омогућава да креирате форматиране стрингове користећи посебну синтаксу чувара места. Можете да користите Спринтф за прављење стрингова који укључују бројеве и вредности валуте, што олакшава креирање људи читљивог излаза.