Formatear números correctamente puede ser una tarea complicada. Y formatear monedas trae desafíos adicionales relacionados con la localización. Afortunadamente, Go tiene características para ayudar.
La biblioteca estándar de Go proporciona varias herramientas para dar formato a los números. El paquete strconv incluye funciones para analizar y convertir números hacia y desde cadenas.
El paquete strconv
El strconv El paquete es una poderosa herramienta para convertir entre números y cadenas. Puede usarlo para trabajar con números en varios formatos.
strconv es parte de la biblioteca estándar, por lo que es relevante para muchos de los Conceptos básicos de Go con los que debería estar familiarizado. Así es como puedes importarlo:
importar"strconv"
El paquete proporciona funciones para convertir números hacia y desde cadenas en varios formatos. Incluye funciones para trabajar con números enteros y en coma flotante.
strconv también puede manejar la conversión hacia y desde formatos binarios, octales y hexadecimales, así como notación científica.
Dar formato a enteros en Go
El paquete strconv itoa La función proporciona funcionalidad para convertir enteros en cadenas. El itoa La función toma un entero y devuelve la representación de cadena de ese entero.
importar (
"fmt"
"strconv"
)
funciónprincipal() {
enteros := 3043
stringVersion := strconv. Itoa (enteros)
fmt. Println (versión de cadena) // Salida: "3043"
}
Este código convierte un valor entero en una cadena usando itoa. Luego envía la cadena resultante a la consola usando el fmt paquete.
Además de itoa función, strconv proporciona:
- FormatInt para formatear enteros como cadenas con una base dada
- AppendInt para agregar enteros en forma de cadena a una porción de bytes.
Así es como puede usar el FormatInt función para formatear un entero:
importar (
"fmt"
"strconv"
)
funciónprincipal() {
enteros := 12345
cadenas := strconv. FormatoInt(int64(enteros), 10)
fmt. Println (cadenas) // Salida: "12345"
}
Este código utiliza int64() para convertir el valor original en un entero de 64 bits. Luego pasa el resultado a FormatInt, junto con una base para la conversión, en este caso 10. FormatInt devuelve una cadena que Imprimir luego sale a la consola.
El AppendInt función toma un segmento de bytes, un int64 valor y una base.
importar (
"fmt"
"strconv"
)
funciónprincipal() {
enteros := 12345
segmento de bytes := hacer([]byte, 0, 20)
byteSlice = strconv. AppendInt (porción de bytes, int64(enteros), 10)
fmt. imprimir(cadena(porción de bytes)) // Salida: "12345"
}
Tenga en cuenta que AppendInt recibe un segmento de bytes para agregarlo y devuelve el segmento de bytes resultante. En este caso, el segmento de bytes inicial está vacío, pero tiene una capacidad de 20 para almacenar la representación de cadena resultante del entero.
Análisis de cadenas como enteros
El Atoi La función convierte cadenas en enteros. Toma una cadena como entrada y devuelve una representación entera de esa cadena junto con un tipo de error.
Así es como puede usar el Atoi función para la conversión de cadena a entero:
importar (
"fmt"
"strconv"
)funciónprincipal() {
cuerdas := "123"
enteros, err := strconv. Atoi (cuerdas)si error! = nulo {
fmt. Imprimir (err)
}
fmt. Println (enteros)
}
El programa envía el valor entero a la consola:
También puede utilizar el ParseUint función para analizar la representación de cadena de enteros sin signo.
paquete principal
importar (
"fmt"
"strconv"
)funciónprincipal() {
// analiza la cadena como base 10 y entero sin signo de 0 bits
val, err := strconv. ParseUint("12345", 10, 0)
si error! = nulo {
fmt. Imprimir (err)
} demás {
fmt. Imprimir (val) // Salida: 12345
}
}
El ParseUint La función analiza la cadena 12345 como un número entero sin signo en base diez. El tamaño de 0 bits garantiza que devuelve un tipo int estándar. Devuelve el valor analizado y un error.
Puedes usar el ParseFloat función para analizar una representación de cadena de un número de coma flotante.
importar (
"fmt"
"strconv"
)funciónprincipal() {
// analiza la cadena como un número de coma flotante de 64 bits
val, err := strconv. ParseFloat("3.14", 64)
si error! = nulo {
fmt. Imprimir (err)
} demás {
fmt. Imprimir (val) // Salida: 3.14
}
}
El ParseFloat La función analiza la cadena como un número de coma flotante de 64 bits y devuelve la cadena y un tipo de error.
Formateo de monedas en Go
La creación de una aplicación que interactúe con monedas requiere el formato y el análisis de números. Trabajar con diferentes monedas puede ser un desafío, pero el strconv y contabilidad Los paquetes pueden ayudarlo a formatearlos.
A continuación, le mostramos cómo puede analizar una cadena de moneda en un flotante para operaciones en la moneda:
importar (
"fmt"
"strconv"
)funciónprincipal() {
// Cadena de moneda para analizar
monedaStr := "$1,234.56"// Eliminar el símbolo de moneda y convertirlo en flotante
floatVal, err := strconv. ParseFloat (currencyStr[1:], 64)si error! = nulo {
fmt. Imprimir (err)
devolver
}
// Imprime el valor flotante analizado
fmt. Println (valor flotante) // Salida: 1234.56
}
El monedaStr variable es una representación de cadena de un valor de moneda con un signo de dólar como símbolo. El programa utiliza el ParseFloat función para analizar la cadena de moneda a partir del segundo elemento (después del símbolo de moneda).
Convencionalmente, es mejor evitar el uso de flotantes para las monedas, ya que pueden provocar errores de cálculo y errores en la producción.
Alternativamente, puede usar un paquete de terceros como contabilidad que tiene funcionalidad para formatear y analizar monedas.
Ejecute este comando de terminal en el directorio de su proyecto para instalar el paquete de contabilidad:
ve a github.com/leekchan/accounting
Comience por crear una instancia de la Contabilidad estructura Recuerde que las estructuras son una de Funciones principales orientadas a objetos de Go, similar a las clases de otros idiomas. Puede inicializar una instancia de Contabilidad con un símbolo de moneda y un valor de precisión, entre otras opciones.
Puedes usar el formatodinero función del paquete de contabilidad para formatear números en monedas.
paquete principal
importar (
"fmt"
"matemáticas/grande""github.com/leekchan/contabilidad"
)
funciónprincipal() {
ac := contabilidad. Contabilidad{Símbolo: "$", Precisión: 2}
fmt. Imprimir (ac. FormatoDinero(123456789.213123))
fmt. Imprimir (ac. FormatoDinero(12345678))
fmt. Imprimir (ac. FormatMoney (grande. Rata Nueva(77777777, 3)))
fmt. Imprimir (ac. FormatMoney (grande. Rata Nueva(-77777777, 3)))
fmt. Imprimir (ac. FormatMoneyBigFloat (grande. Nuevo Flotador(123456789.213123)))
}
El C.A variable es la instancia de contabilidad. Este programa formatea e imprime valores monetarios usando el formatodinero y FormatoDineroBigFloat métodos de la instancia contable. El Rata nueva función de la grande paquete crea un número racional dado un numerador y un denominador. El Nuevo Flotador función ayuda a representar grandes números de coma flotante.
Go también puede ayudarlo a formatear otros tipos
Go proporciona muchas funciones para convertir números y monedas de una manera sencilla.
El lenguaje también ofrece un poderoso sistema de formato de cadenas. La función Sprintf inspirada en C del paquete fmt le permite crear cadenas formateadas utilizando una sintaxis de marcador de posición especial. Puede usar Sprintf para crear cadenas que incluyan números y valores de moneda, lo que facilita la creación de resultados legibles por humanos.