Pemformatan Mata Wang dalam Go dengan Golang.org/x/text/Simbol Mata Wang
Golang.org/x/text/ pakej mata wang menyediakan sokongan yang meluas untuk memformat nilai mata wang. Artikel ini menunjukkan cara memanfaatkan Mata Wang.Simbol untuk mencapai pemformatan yang betul, menangani isu biasa seperti pemisah ribuan yang tidak betul dan peletakan mata.
Isu:
Pengguna menghadapi isu yang output mereka tidak mempunyai beribu-ribu pemisah dan salah memaparkan mata dan bukannya koma untuk pemformatan mata wang.
Masalah Dasar:
Isu ini berpunca daripada kelakuan lalai mata wang.Simbol, yang mengembalikan simbol mata wang tanpa sebarang pemformatan khusus setempat. Akibatnya, titik perpuluhan dan pemisah beribu-ribu tidak digunakan dengan betul.
Penyelesaian 1: Menyimpulkan Format Mata Wang daripada Kod Bahasa
Satu penyelesaian melibatkan membuat kesimpulan format mata wang daripada kod bahasa yang digunakan dalam pakej bahasa. Dengan menetapkan bahasa Pencetak ke tempat yang dikehendaki, output akan diformatkan mengikut konvensyen setempat. Sebagai contoh, untuk Portugis Brazil, output akan diformatkan sebagai "R$ 123.456,78."
<code class="go">package main import ( "golang.org/x/text/currency" "golang.org/x/text/language" "golang.org/x/text/message" ) func main() { unit, _ := currency.ParseISO("BRL") const valor = 12345678 p := message.NewPrinter(language.BrazilianPortuguese) formatted := p.Sprint(currency.Symbol(unit.Amount(float64(valor) / 100))) println(formatted) // Output: R$ 123.456,78 }</code>
Penyelesaian 2: Menghuraikan Kod Mata Wang ISO dan Menentukan Bahasa
Pendekatan lain ialah menghuraikan kod mata wang ISO dan secara eksplisit menetapkan bahasa untuk pemformatan. Kaedah ini memberikan lebih fleksibiliti dalam menentukan format output yang diingini.
<code class="go">package main import ( "golang.org/x/text/currency" "golang.org/x/text/language" "golang.org/x/text/message" "golang.org/x/text/number" ) func main() { unit, _ := currency.ParseISO("BRL") const valor = 12345678 lang := language.Portuguese p := message.NewPrinter(lang) formatted := p.Sprintf( number.Format("%q%v", currency.Symbol(unit.Amount(float64(valor) / 100), lang), number.Decimal(valor, number.Scale(2)), )) println(formatted) // Output: R$ 123.456,78 }</code>
Pertimbangan untuk Mata Wang Bertambah Bulat
Untuk mata wang yang dibundarkan secara berperingkat (cth., sebanyak 0.05 atau 0.50), pemprosesan tambahan diperlukan untuk menyediakan pemformat Perpuluhan dengan IncrementString yang sesuai. Ini memastikan bahawa nilai bulat diformatkan dengan sewajarnya.
Kesimpulan
Dengan menggunakan Mata Wang.Simbol bersama-sama dengan percetakan sedar bahasa, pembangun boleh mencapai pemformatan mata wang yang tepat dalam Go , menangani isu biasa pemisah ribuan yang salah dan titik perpuluhan yang salah letak.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Isu Pemformatan Mata Wang dengan Mata Wang.Simbol dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!