Az Önhöz hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

A számok helyes formázása bonyolult feladat lehet. A pénznemek formázása pedig további kihívásokat jelent a lokalizáció terén. Szerencsére a Go olyan funkciókkal rendelkezik, amelyek segítenek.

A Go szabványkönyvtár különféle eszközöket biztosít a számok formázásához. Az strconv csomag olyan függvényeket tartalmaz, amelyek segítségével értelmezhetők és konvertálhatók a számok karakterláncokká és karakterláncokból.

Az strconv csomag

A strconv csomag egy hatékony eszköz a számok és karakterláncok közötti konvertáláshoz. Különféle formátumú számokkal dolgozhat.

Az strconv a szabványos könyvtár része, így sok számára releváns alapvető Go fogalmak, amelyeket ismernie kell. Így importálhatja:

import"strconv"

A csomag különféle formátumú számok karakterláncokká és karakterláncokból való konvertálására szolgáló funkciókat biztosít. Olyan függvényeket tartalmaz, amelyek egész számokkal és lebegőpontos számokkal dolgoznak.

instagram viewer

Az strconv képes kezelni a bináris, oktális és hexadecimális formátumokba való konvertálást, valamint a tudományos jelöléseket is.

Egész számok formázása a Go-ban

Az strconv csomag Itoa A függvény egész számokat karakterláncokká konvertál. A Itoa A függvény egy egész számot vesz fel, és visszaadja ennek az egész számnak a karakterlánc reprezentációját.

import (
"fmt"
"strconv"
)

funcfő-() {
egész számok := 3043
stringVersion := strconv. Itoa (egész számok)
fmt. Println (stringVersion) // Kimenet: "3043"
}

Ez a kód egy egész értéket karakterláncsá konvertál a használatával Itoa. Ezután a kapott karakterláncot a konzolra adja ki a fmt csomag.

Amellett, hogy a Itoa függvény, strconv biztosítja:

  • FormatInt egész számok karakterláncként való formázásához adott bázissal
  • AppendInt egész számok hozzáfűzéséhez karakterlánc formában egy bájtszelethez.

Íme, hogyan használhatja a FormatInt függvény egész szám formázásához:

import (
"fmt"
"strconv"
)

funcfő-() {
egész számok := 12345
strings := strconv. FormatInt(int64(egész számok), 10)
fmt. Println (karakterláncok) // Kimenet: "12345"
}

Ez a kód használja int64() az eredeti érték 64 bites egész számmá alakításához. Ezután továbbítja az eredményt FormatInt, valamint egy átalakítási alap, jelen esetben 10. A FormatInt egy karakterláncot ad vissza, amely Println majd kimenet a konzolra.

A AppendInt függvény egy bájtszeletet vesz fel, an int64 érték, és egy alap.

import (
"fmt"
"strconv"
)

funcfő-() {
egész számok := 12345
byteSlice := készítsenek([]byte, 0, 20)
byteSlice = strconv. AppendInt (byteSlice, int64(egész számok), 10)
fmt. Println(húr(byteSlice)) // Kimenet: "12345"
}

Vegye figyelembe, hogy az AppendInt egy bájtszeletet kap, amelyhez hozzá kell fűzni, és az eredményül kapott bájtszeletet adja vissza. Ebben az esetben a kezdeti bájtszelet üres, de 20-as kapacitással rendelkezik az egész szám eredő karakterlánc-reprezentációjának tárolására.

Karakterláncok elemzése egész számként

A Atoi függvény a karakterláncokat egész számokká alakítja. Bemenetként egy karakterláncot vesz fel, és ennek a karakterláncnak egész számot ad vissza egy hibatípussal együtt.

Íme, hogyan használhatja a Atoi függvény karakterláncból egész számmá konvertálásához:

import (
"fmt"
"strconv"
)

funcfő-() {
húrok := "123"
egész számok, err := strconv. Atoi (húrok)

ha hiba! = nulla {
fmt. Println (hiba)
}

fmt. Println (egész számok)
}

A program az egész értéket adja ki a konzolnak:

Használhatja továbbá a ParseUint függvény az előjel nélküli egész számok karakterlánc reprezentációjának elemzéséhez.

csomag fő-

import (
"fmt"
"strconv"
)

funcfő-() {
// a karakterlánc elemzése 10-es alap és 0 bites előjel nélküli egész számként
val, err := strconv. ParseUint("12345", 10, 0)

ha hiba! = nulla {
fmt. Println (hiba)
} más {
fmt. Println (val) // Kimenet: 12345
}
}

A ParseUint függvény az 12345 karakterláncot tízes alapjelű, előjel nélküli egész számként elemzi. A 0 bites méret biztosítja, hogy szabványos int típust ad vissza. Visszaadja az elemzett értéket és egy hibát.

Használhatja a ParseFloat függvény egy lebegőpontos szám karakterlánc-reprezentációjának elemzéséhez.

import (
"fmt"
"strconv"
)

funcfő-() {
// a karakterláncot 64 bites lebegőpontos számként elemzi
val, err := strconv. ParseFloat("3.14", 64)

ha hiba! = nulla {
fmt. Println (hiba)
} más {
fmt. Println (val) // Kimenet: 3.14
}
}

A ParseFloat függvény 64 bites lebegőpontos számként elemzi a karakterláncot, és visszaadja a karakterláncot és egy hibatípust.

Pénznemek formázása a Go-ban

A pénznemekkel kölcsönhatásba lépő alkalmazás létrehozásához számformázásra és -elemzésre van szükség. A különböző pénznemekkel való munka kihívást jelenthet, de a strconv és könyvelés csomagok segíthetnek formázni őket.

A következőképpen elemezhet egy valutakarakterláncot lebegővé a pénznemre vonatkozó műveletekhez:

import (
"fmt"
"strconv"
)

funcfő-() {
// Az elemzendő pénznem karakterlánca
valutaStr := "$1,234.56"

// Távolítsa el a valuta szimbólumot, és váltson lebegővé
floatVal, err := strconv. ParseFloat (currencyStr[1:], 64)

ha hiba! = nulla {
fmt. Println (hiba)
Visszatérés
}

// Kinyomtatja az elemzett lebegő értéket
fmt. Println (floatVal) // Kimenet: 1234.56
}

A valutaStr A változó egy valutaérték karakterlánc-ábrázolása, amelynek szimbóluma egy dollárjel. A program a ParseFloat függvény segítségével elemzi a valuta karakterláncot a második elemtől kezdve (a pénznem szimbólum után).

Hagyományosan a legjobb, ha kerüli a lebegő pénznemek használatát, mivel ez téves számításokat és hibákat eredményezhet a gyártás során.

Alternatív megoldásként használhat harmadik féltől származó csomagot, például könyvelés amely a pénznemek formázására és elemzésére alkalmas.

Futtassa ezt a terminálparancsot a projektkönyvtárban a könyvelési csomag telepítéséhez:

keresd meg a github.com/leekchan/accounting oldalt

Kezdje a példány létrehozásával a Könyvelés struct. Emlékezzünk vissza, hogy a struktúrák az egyik A Go alapvető objektumorientált szolgáltatásai, hasonlóan más nyelvű osztályokhoz. Inicializálhat egy könyvelési példányt egy pénznemszimbólum és egy precíziós érték segítségével, többek között.

Használhatja a FormatMoney a számviteli csomag funkciója a számok pénznemre formázásához.

csomag fő-

import (
"fmt"
"matematika/nagy"

"github.com/leekchan/accounting"
)

funcfő-() {
ac := könyvelés. Számvitel{Szimbólum: "$", Pontosság: 2}
fmt. Println (ac. FormatMoney(123456789.213123))
fmt. Println (ac. FormatMoney(12345678))
fmt. Println (ac. FormatMoney (nagy. NewRat(77777777, 3)))
fmt. Println (ac. FormatMoney (nagy. NewRat(-77777777, 3)))
fmt. Println (ac. FormatMoneyBigFloat (nagy. NewFloat(123456789.213123)))
}

A ac változó a számviteli példány. Ez a program a pénzbeli értékeket formázza és nyomtatja ki a FormatMoney és FormátumMoneyBigFloat a számviteli példány módszerei. A NewRat függvény a nagy csomag racionális számot hoz létre számlálóval és nevezővel. A NewFloat függvény segít a nagy lebegőpontos számok ábrázolásában.

A Go más típusok formázásában is segíthet

A Go számos funkciót kínál a számok és pénznemek egyszerű konvertálásához.

A nyelv erőteljes karakterláncformázó rendszert is kínál. Az fmt csomag C-ihlette Sprintf funkciója lehetővé teszi formázott karakterláncok létrehozását egy speciális helyőrző szintaxis használatával. A Sprintf segítségével számokat és pénznemértékeket tartalmazó karakterláncokat hozhat létre, így egyszerűvé téve az ember által olvasható kimenet létrehozását.