Formatação adequada de moeda em Golang
Ao trabalhar com formatação de moeda, é essencial considerar os requisitos específicos para cada combinação de moeda e idioma. Usando golang.org/x/text/currency, você pode formatar valores facilmente com base em convenções locais. No entanto, você pode encontrar alguns desafios para obter o resultado desejado.
Usando símbolos de moeda
Em seu código, você usa currency.Symbol para recuperar o símbolo de moeda para o código ISO especificado. No entanto, ao usar esse método sem fornecer um contexto de idioma, você pode não obter os separadores ou formatação de número esperados.
Incorporando formatos locais
Em vez de tentar criar manualmente seu formato, você pode aproveitar os pacotes de exibição e mensagem para recuperar automaticamente o formato apropriado com base no idioma e na região. Aqui está um exemplo:
import (
"fmt"
"golang.org/x/text/currency"
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func formatCurrency(value int64, currencyCode string, languageCode string) string {
lang, _ := language.Parse(languageCode)
p := message.NewPrinter(lang)
unit, _ := currency.ParseISO(currencyCode)
return p.Sprintf("%v%v", currency.Symbol(unit), float64(value))
}
Esta função recebe um valor, código de moeda e código de idioma e retorna uma string de moeda formatada corretamente.
Manipulação de unidades de incremento
Algumas as moedas têm uma unidade de incremento fixa, como 5 ou 10 centavos. Para explicar isso, você pode usar o pacote number para especificar o incremento:
import (
"golang.org/x/text/currency"
"golang.org/x/text/number"
)
func formatWithIncrement(value int64, currencyCode string, increment int) string {
unit, _ := currency.ParseISO(currencyCode)
scale, inc := currency.Cash.Rounding(unit)
dec := number.Decimal(float64(value), number.Scale(scale), number.IncrementString(fmt.Sprintf("%.2f", float64(inc))))
return fmt.Sprintf("%v%v", currency.Symbol(unit), dec)
}
Ao fornecer o contexto do idioma, inferir o formato da moeda a partir dos códigos do idioma e considerar as unidades de incremento, você pode criar soluções de formatação de moeda flexíveis e precisas em Golang usando golang.org/x/text/currency.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3