Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Правилното форматиране на числа може да бъде трудна задача. А форматирането на валути носи допълнителни предизвикателства, включващи локализация. За щастие, Go има функции, които да ви помогнат.

Стандартната библиотека Go предоставя различни инструменти за форматиране на числа. Пакетът strconv включва функции за анализиране и преобразуване на числа към и от низове.

Пакетът strconv

The strconv package е мощен инструмент за конвертиране между числа и низове. Можете да го използвате за работа с числа в различни формати.

strconv е част от стандартната библиотека, така че е подходящ за много от основни концепции на Go, с които трябва да сте запознати. Ето как можете да го импортирате:

импортиране"strconv"

Пакетът предоставя функции за конвертиране на числа към и от низове в различни формати. Той включва функции за работа с цели числа и числа с плаваща запетая.

instagram viewer

strconv може също да обработва преобразуване към и от двоични, осмични и шестнадесетични формати, както и научна нотация.

Форматиране на цели числа в Go

Пакетът strconv Итоа функция предоставя функционалност за преобразуване на цели числа в низове. The Итоа функцията приема цяло число и връща низовото представяне на това цяло число.

импортиране (
"fmt"
"strconv"
)

функосновен() {
цели числа := 3043
stringVersion := strconv. Итоа (цели числа)
fmt. Println (stringVersion) // Изход: "3043"
}

Този код преобразува целочислена стойност в низ, използвайки Итоа. След това извежда получения низ към конзолата, като използва fmt пакет.

В допълнение към Итоа функция, strconv осигурява:

  • FormatInt за форматиране на цели числа като низове с дадена основа
  • AppendInt за добавяне на цели числа под формата на низ към част от байтове.

Ето как можете да използвате FormatInt функция за форматиране на цяло число:

импортиране (
"fmt"
"strconv"
)

функосновен() {
цели числа := 12345
низове := strconv. FormatInt(int64(цели числа), 10)
fmt. Println (низове) // Изход: "12345"
}

Този код използва int64() за преобразуване на оригиналната стойност в 64-битово цяло число. След това предава резултата на FormatInt, заедно с база за преобразуване, в случая 10. FormatInt връща низ, който Println след това извежда към конзолата.

The AppendInt функцията приема байт срез, an int64 стойност и база.

импортиране (
"fmt"
"strconv"
)

функосновен() {
цели числа := 12345
byteSlice := направи([]байт, 0, 20)
byteSlice = strconv. AppendInt (byteSlice, int64(цели числа), 10)
fmt. Println(низ(byteSlice)) // Изход: "12345"
}

Обърнете внимание, че AppendInt получава байтов отрязък, към който да добави, и връща получения байтов отрязък. В този случай първоначалният байтов отрязък е празен, но има капацитет от 20 за съхраняване на резултантното низово представяне на цялото число.

Анализиране на низове като цели числа

The Атои функция преобразува низове в цели числа. Той приема низ като вход и връща цяло число на този низ заедно с тип грешка.

Ето как можете да използвате Атои функция за преобразуване на низ в цяло число:

импортиране (
"fmt"
"strconv"
)

функосновен() {
низове := "123"
цели числа, грешка := strconv. Атои (струни)

ако грешка!= нула {
fmt. Println (грешка)
}

fmt. Println (цели числа)
}

Програмата извежда целочислената стойност на конзолата:

Можете също да използвате ParseUint функция за анализиране на низовото представяне на цели числа без знак.

пакет основен

импортиране (
"fmt"
"strconv"
)

функосновен() {
// анализира низ като основа 10 и 0-битово цяло число без знак
val, err := strconv. ParseUint("12345", 10, 0)

ако грешка!= нула {
fmt. Println (грешка)
} друго {
fmt. Println (вал) // Изход: 12345
}
}

The ParseUint функция анализира низа 12345 като цяло число без знак с основа десет. Размерът от 0 бита гарантира, че връща стандартен int тип. Връща анализираната стойност и грешка.

Можете да използвате ParseFloat функция за анализиране на низово представяне на число с плаваща запетая.

импортиране (
"fmt"
"strconv"
)

функосновен() {
// анализира низ като 64-битово число с плаваща запетая
val, err := strconv. ParseFloat("3.14", 64)

ако грешка!= нула {
fmt. Println (грешка)
} друго {
fmt. Println (вал) // Изход: 3.14
}
}

The ParseFloat функция анализира низа като 64-битово число с плаваща запетая и връща низа и тип грешка.

Форматиране на валути в Go

Изграждането на приложение, което взаимодейства с валути, изисква форматиране на числа и парсване. Работата с различни валути може да бъде предизвикателство, но strconv и счетоводство пакетите могат да ви помогнат да ги форматирате.

Ето как можете да анализирате валутен низ до плаваща стойност за операции с валутата:

импортиране (
"fmt"
"strconv"
)

функосновен() {
// Валутен низ за анализ
currencyStr := "$1,234.56"

// Премахване на символа на валутата и преобразуване в плаваща стойност
floatVal, грешка := strconv. ParseFloat (currencyStr[1:], 64)

ако грешка!= нула {
fmt. Println (грешка)
връщане
}

// Отпечатване на анализираната плаваща стойност
fmt. Println (floatVal) // Изход: 1234.56
}

The валутаStr променливата е низово представяне на валутна стойност със знак за долар като символ. Програмата използва ParseFloat функция за анализиране на валутния низ, започвайки от втория елемент (след символа на валутата).

Обикновено е най-добре да избягвате използването на плаващи валути за валути, тъй като те могат да доведат до грешни изчисления и грешки в производството.

Като алтернатива можете да използвате пакет на трета страна като счетоводство който има функционалност за форматиране и парсване на валути.

Изпълнете тази терминална команда в директорията на вашия проект, за да инсталирате счетоводния пакет:

отидете да получите github.com/leekchan/accounting

Започнете със създаване на екземпляр на Счетоводство структура Спомнете си, че структурите са една от Основните обектно-ориентирани функции на Go, подобно на класове от други езици. Можете да инициализирате счетоводен екземпляр със символ на валута и прецизна стойност, наред с други опции.

Можете да използвате FormatMoney функция на счетоводния пакет за форматиране на числа във валути.

пакет основен

импортиране (
"fmt"
"математика/голям"

"github.com/leekchan/accounting"
)

функосновен() {
ac := счетоводство. Счетоводство{Символ: "$", Прецизност: 2}
fmt. Println (ac. FormatMoney(123456789.213123))
fmt. Println (ac. FormatMoney(12345678))
fmt. Println (ac. FormatMoney (голям. NewRat(77777777, 3)))
fmt. Println (ac. FormatMoney (голям. NewRat(-77777777, 3)))
fmt. Println (ac. FormatMoneyBigFloat (голям. NewFloat(123456789.213123)))
}

The ак променливата е счетоводната инстанция. Тази програма форматира и отпечатва парични стойности с помощта на FormatMoney и FormatMoneyBigFloat методи на счетоводната инстанция. The Нов Плъх функция от голям package създава рационално число с числител и знаменател. The NewFloat функцията помага за представяне на големи числа с плаваща запетая.

Go може да ви помогне да форматирате и други типове

Go предоставя много функции за конвертиране на числа и валути по директен начин.

Езикът предлага и мощна система за форматиране на низове. Вдъхновената от C функция Sprintf на пакета fmt ви позволява да създавате форматирани низове, като използвате специален синтаксис на контейнер. Можете да използвате Sprintf за изграждане на низове, които включват числа и валутни стойности, което улеснява създаването на четлив за човека изход.