Správné formátování čísel může být složitý úkol. A formátování měn přináší další výzvy týkající se lokalizace. Naštěstí má Go funkce, které vám pomohou.
Standardní knihovna Go poskytuje různé nástroje pro formátování čísel. Balíček strconv obsahuje funkce pro analýzu a převod čísel do az řetězců.
Balíček strconv
The strconv balíček je výkonný nástroj pro převod mezi čísly a řetězci. Můžete jej použít pro práci s čísly v různých formátech.
strconv je součástí standardní knihovny, takže je relevantní pro mnoho z základní koncepty Go, které byste měli znát. Zde je postup, jak jej importovat:
import"strconv"
Balíček poskytuje funkce pro převod čísel do az řetězců v různých formátech. Obsahuje funkce pro práci s celými čísly a čísly s plovoucí desetinnou čárkou.
strconv také zvládne převod do az binárních, osmičkových a hexadecimálních formátů a také vědecký zápis.
Formátování celých čísel v Go
Balíček strconv Itoa Funkce poskytuje funkce pro převod celých čísel na řetězce. The Itoa funkce vezme celé číslo a vrátí řetězcovou reprezentaci tohoto celého čísla.
import (
"fmt"
"strconv"
)
funchlavní() {
celá čísla := 3043
stringVersion := strconv. Itoa (celá čísla)
fmt. Println (stringVersion) // Výstup: "3043"
}
Tento kód převede celočíselnou hodnotu na řetězec pomocí Itoa. Poté odešle výsledný řetězec do konzole pomocí fmt balík.
Navíc k Itoa funkce, strconv poskytuje:
- FormatInt pro formátování celých čísel jako řetězců s daným základem
- AppendInt pro připojení celých čísel ve formě řetězce k řezu bajtů.
Zde je návod, jak můžete použít FormatInt funkce pro formátování celého čísla:
import (
"fmt"
"strconv"
)
funchlavní() {
celá čísla := 12345
řetězce := strconv. FormatInt(int64(celá čísla), 10)
fmt. Println (řetězce) // Výstup: "12345"
}
Tento kód používá int64() převést původní hodnotu na 64bitové celé číslo. Výsledek pak předá do FormatInt, spolu se základnou pro konverzi, v tomto případě 10. FormatInt vrací řetězec který Println pak výstupy do konzole.
The AppendInt funkce zabírá bajtový řez, an int64 hodnotu a základ.
import (
"fmt"
"strconv"
)
funchlavní() {
celá čísla := 12345
byteSlice := udělat([]byte, 0, 20)
byteSlice = strconv. AppendInt (byteSlice, int64(celá čísla), 10)
fmt. Println(tětiva(byteSlice)) // Výstup: "12345"
}
Všimněte si, že AppendInt obdrží bajtový řez, ke kterému se má připojit, a vrátí výsledný bajtový řez. V tomto případě je počáteční byte řez prázdný, ale má kapacitu 20 pro uložení výsledné řetězcové reprezentace celého čísla.
Analýza řetězců jako celých čísel
The Atoi funkce převádí řetězce na celá čísla. Vezme řetězec jako vstup a vrátí celočíselnou reprezentaci tohoto řetězce spolu s typem chyby.
Zde je návod, jak můžete použít Atoi funkce pro převod řetězce na celé číslo:
import (
"fmt"
"strconv"
)funchlavní() {
řetězce := "123"
celá čísla, chyba := strconv. Atoi (struny)-li chyba!= nula {
fmt. Println (chyba)
}
fmt. Println (celá čísla)
}
Program odešle celočíselnou hodnotu do konzole:
Můžete také použít ParseUint funkce pro analýzu řetězcové reprezentace celých čísel bez znaménka.
balík hlavní
import (
"fmt"
"strconv"
)funchlavní() {
// analyzovat řetězec jako základní 10 a 0-bitové celé číslo bez znaménka
val, err := strconv. ParseUint("12345", 10, 0)
-li chyba!= nula {
fmt. Println (chyba)
} jiný {
fmt. Println (val) // Výstup: 12345
}
}
The ParseUint funkce analyzuje řetězec 12345 jako základní deset, celé číslo bez znaménka. Velikost 0 bitů zajišťuje, že vrátí standardní typ int. Vrátí analyzovanou hodnotu a chybu.
Můžete použít ParseFloat funkce pro analýzu řetězcové reprezentace čísla s plovoucí desetinnou čárkou.
import (
"fmt"
"strconv"
)funchlavní() {
// analyzovat řetězec jako 64bitové číslo s plovoucí desetinnou čárkou
val, err := strconv. ParseFloat("3.14", 64)
-li chyba!= nula {
fmt. Println (chyba)
} jiný {
fmt. Println (val) // Výstup: 3.14
}
}
The ParseFloat funkce analyzuje řetězec jako 64bitové číslo s plovoucí desetinnou čárkou a vrátí řetězec a typ chyby.
Formátování měn v Go
Vytvoření aplikace, která komunikuje s měnami, vyžaduje formátování čísel a analýzu. Práce s různými měnami může být problém, ale strconv a účetnictví balíčky vám mohou pomoci s jejich formátováním.
Zde je návod, jak můžete analyzovat řetězec měny na float pro operace s měnou:
import (
"fmt"
"strconv"
)funchlavní() {
// Řetězec měny k analýze
currencyStr := "$1,234.56"// Odstraňte symbol měny a převeďte jej na float
floatVal, err := strconv. ParseFloat (currencyStr[1:], 64)-li chyba!= nula {
fmt. Println (chyba)
vrátit se
}
// Vytiskne analyzovanou hodnotu float
fmt. Println (floatVal) // Výstup: 1234,56
}
The měnaStr proměnná je řetězcová reprezentace hodnoty měny se znakem dolaru jako symbolem. Program využívá ParseFloat funkce pro analýzu řetězce měny počínaje druhým prvkem (za symbolem měny).
Obvykle je nejlepší vyhnout se používání pohyblivých měn pro měny, protože mohou vést k chybným výpočtům a chybám ve výrobě.
Případně můžete použít balíček třetí strany jako např účetnictví který má funkce pro formátování a analýzu měn.
Spusťte tento příkaz terminálu v adresáři projektu a nainstalujte účetní balíček:
přejděte na github.com/leekchan/accounting
Začněte vytvořením instance souboru Účetnictví strukturovat. Připomeňme, že struktury jsou jednou z Základní objektově orientované funkce Go, podobně jako třídy z jiných jazyků. Instanci Accounting můžete inicializovat mimo jiné pomocí symbolu měny a hodnoty přesnosti.
Můžete použít Format Money funkce účetního balíčku pro formátování čísel do měn.
balík hlavní
import (
"fmt"
"matematický/velký""github.com/leekchan/accounting"
)
funchlavní() {
ac := účetnictví. Účetnictví{Symbol: "$", Přesnost: 2}
fmt. Println (ac. Format Money(123456789.213123))
fmt. Println (ac. Format Money(12345678))
fmt. Println (ac. FormatMoney (velký. Nová Krysa(77777777, 3)))
fmt. Println (ac. FormatMoney (velký. Nová Krysa(-77777777, 3)))
fmt. Println (ac. FormatMoneyBigFloat (velký. NewFloat(123456789.213123)))
}
The ac proměnná je účetní instance. Tento program formátuje a tiskne peněžní hodnoty pomocí Format Money a FormátMoneyBigFloat metody účetní instance. The NewRat funkce z velký balíček vytvoří racionální číslo dané čitatelem a jmenovatelem. The NewFloat Funkce pomáhá reprezentovat velká čísla s plovoucí desetinnou čárkou.
Go vám může pomoci formátovat i jiné typy
Go poskytuje spoustu funkcí pro jednoduchý převod čísel a měn.
Jazyk také nabízí výkonný systém formátování řetězců. Funkce Sprintf inspirovaná C balíčku fmt vám umožňuje vytvářet formátované řetězce pomocí speciální syntaxe zástupného symbolu. Sprintf můžete použít k sestavení řetězců, které obsahují čísla a hodnoty měn, což usnadňuje vytváření pro člověka čitelného výstupu.