Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

Formatar números corretamente pode ser uma tarefa complicada. E a formatação de moedas traz desafios adicionais envolvendo localização. Felizmente, Go tem recursos para ajudar.

A biblioteca padrão Go fornece várias ferramentas para formatar números. O pacote strconv inclui funções para analisar e converter números de e para strings.

O pacote strconv

O strconv pacote é uma ferramenta poderosa para converter entre números e strings. Você pode usá-lo para trabalhar com números em vários formatos.

strconv faz parte da biblioteca padrão, por isso é relevante para muitos dos conceitos básicos de Go com os quais você deve estar familiarizado. Veja como você pode importá-lo:

importar"strconv"

O pacote fornece funções para converter números de e para strings em vários formatos. Inclui funções para trabalhar com inteiros e números de ponto flutuante.

instagram viewer

strconv também pode lidar com a conversão de e para formatos binários, octais e hexadecimais, bem como notação científica.

Formatando inteiros em Go

O pacote strconv Itoa A função fornece funcionalidade para converter números inteiros em strings. O Itoa A função pega um inteiro e retorna a representação de string desse inteiro.

importar (
"fmt"
"strconv"
)

funçãoprincipal() {
inteiros := 3043
stringVersão := strconv. Itoa (inteiros)
fmt. Println (stringVersion) // Saída: "3043"
}

Este código converte um valor inteiro em uma string usando Itoa. Em seguida, ele envia a string resultante para o console usando o fmt pacote.

Em adição a Itoa função, strconv fornece:

  • FormatInt para formatar números inteiros como strings com uma determinada base
  • AppendInt para anexar números inteiros em forma de string a uma fatia de bytes.

Veja como você pode usar o FormatInt função para formatar um número inteiro:

importar (
"fmt"
"strconv"
)

funçãoprincipal() {
inteiros := 12345
strings := strconv. FormatInt(int64(inteiros), 10)
fmt. Println (strings) // Saída: "12345"
}

Este código usa int64() para converter o valor original em um inteiro de 64 bits. Em seguida, passa o resultado para FormatInt, juntamente com uma base para conversão, neste caso 10. FormatInt retorna uma string que Println em seguida, envia para o console.

O AppendInt função leva em uma fatia de byte, um int64 valor e uma base.

importar (
"fmt"
"strconv"
)

funçãoprincipal() {
inteiros := 12345
byteSlice := fazer([]byte, 0, 20)
byteSlice = strconv. AppendInt (byteSlice, int64(inteiros), 10)
fmt. Imprimirln(corda(byteSlice)) // Saída: "12345"
}

Observe que AppendInt recebe uma fatia de byte para anexar e retorna a fatia de byte resultante. Nesse caso, a fatia de byte inicial está vazia, mas tem uma capacidade de 20 para armazenar a representação de string resultante do inteiro.

Analisando Strings como Inteiros

O Atoi A função converte strings em números inteiros. Ele recebe uma string como entrada e retorna uma representação inteira dessa string junto com um tipo de erro.

Veja como você pode usar o Atoi função para conversão de string para inteiro:

importar (
"fmt"
"strconv"
)

funçãoprincipal() {
strings := "123"
inteiros, erro := strconv. Atoi (cordas)

se erro != nada {
fmt. Println (err)
}

fmt. Println (inteiros)
}

O programa gera o valor inteiro para o console:

Você também pode usar o ParseUint função para analisar a representação de cadeia de inteiros sem sinal.

pacote principal

importar (
"fmt"
"strconv"
)

funçãoprincipal() {
// analisa string como base 10 e inteiro sem sinal de 0 bit
val, err := strconv. ParseUint("12345", 10, 0)

se erro != nada {
fmt. Println (err)
} outro {
fmt. Println (val) // Saída: 12345
}
}

O ParseUint A função analisa a string 12345 como um inteiro sem sinal de base dez. O tamanho de 0 bit garante que ele retorne um tipo int padrão. Ele retorna o valor analisado e um erro.

Você pode usar o ParseFloat função para analisar uma representação de string de um número de ponto flutuante.

importar (
"fmt"
"strconv"
)

funçãoprincipal() {
// analisa a string como um número de ponto flutuante de 64 bits
val, err := strconv. ParseFloat("3.14", 64)

se erro != nada {
fmt. Println (err)
} outro {
fmt. Println (val) // Saída: 3.14
}
}

O ParseFloat A função analisa a string como um número de ponto flutuante de 64 bits e retorna a string e um tipo de erro.

Formatando moedas em Go

Construir um aplicativo que interage com moedas requer formatação e análise de números. Trabalhar com moedas diferentes pode ser um desafio, mas o strconv e contabilidade pacotes podem ajudá-lo a formatá-los.

Veja como você pode analisar uma string de moeda em um float para operações na moeda:

importar (
"fmt"
"strconv"
)

funçãoprincipal() {
// string de moeda para analisar
moedaStr := "$1,234.56"

// Remove o símbolo da moeda e converte para float
floatVal, erro := strconv. ParseFloat (moedaStr[1:], 64)

se erro != nada {
fmt. Println (err)
retornar
}

// Imprime o valor float analisado
fmt. Println (floatVal) // Saída: 1234.56
}

O moedaStr variável é uma representação de string de um valor de moeda com um cifrão como símbolo. O programa usa o ParseFloat função para analisar a string de moeda a partir do segundo elemento (após o símbolo de moeda).

Convencionalmente, é melhor evitar o uso de floats para moedas, pois podem resultar em erros de cálculo e bugs na produção.

Alternativamente, você pode usar um pacote de terceiros como contabilidade que tem funcionalidade para formatar e analisar moedas.

Execute este comando de terminal no diretório do projeto para instalar o pacote de contabilidade:

acesse github.com/leekchan/accounting

Comece criando uma instância do Contabilidade struct. Lembre-se de que as estruturas são uma das Principais recursos orientados a objetos do Go, semelhante a classes de outros idiomas. Você pode inicializar uma instância de Accounting com um símbolo de moeda e um valor de precisão, entre outras opções.

Você pode usar o FormatMoney função do pacote de contabilidade para formatar números em moedas.

pacote principal

importar (
"fmt"
"matemática/grande"

"github.com/leekchan/accounting"
)

funçãoprincipal() {
ac := contabilidade. Contabilidade{Símbolo: "$", Precisão: 2}
fmt. Imprimir (ac. FormatoMoney(123456789.213123))
fmt. Imprimir (ac. FormatoMoney(12345678))
fmt. Imprimir (ac. FormatMoney (grande. NovoRat(77777777, 3)))
fmt. Imprimir (ac. FormatMoney (grande. NovoRat(-77777777, 3)))
fmt. Imprimir (ac. FormatoMoneyBigFloat (big. NovoFloat(123456789.213123)))
}

O ac variável é a instância contábil. Este programa formata e imprime valores monetários usando o FormatMoney e FormatoMoneyBigFloat métodos da instância contábil. O NewRat função do grande pacote cria um número racional dado um numerador e denominador. O NewFloat A função ajuda a representar grandes números de ponto flutuante.

Go pode ajudá-lo a formatar outros tipos também

O Go oferece muitas funções para converter números e moedas de maneira direta.

A linguagem também oferece um poderoso sistema de formatação de strings. A função Sprintf inspirada em C do pacote fmt permite que você crie strings formatadas usando uma sintaxe de espaço reservado especial. Você pode usar o Sprintf para criar strings que incluem números e valores monetários, facilitando a criação de uma saída legível por humanos.