size
dstgo/size es una biblioteca muy útil para convertir entre cadenas y tamaños de archivos
Dirección del repositorio: dstgo/size: Fast conversion between file size and string (github.com)
Dirección de documentación: dstgo/size: Fast conversion between file size and string (github.com)
Instalación
$ go get https://github.com/dstgo/sizeUso
const (
B Size = 1
KB = B * 1024
MB = KB * 1024
GB = MB * 1024
TB = GB * 1024
PB = TB * 1024
)type SizeMeta struct {
Data float64
Unit Size
}Esta biblioteca es muy simple de usar, solo tiene dos funciones expuestas
func ParseSize(str string) SizeMetaParseSize convierte una cadena en una estructura SizeMeta, que almacena el tamaño de datos y la unidad
func ParseTargetSize(str string, size Size) SizeMetaParseTargetSize convierte una cadena en un SizeMeta de tamaño especificado
Ejemplo como sigue:
package main
import (
"fmt"
"github.com/dstgo/size"
)
func main() {
parseSize := size.ParseSize("1.2MB")
fmt.Printf("%+v\n", parseSize)
fmt.Printf("%+v\n", parseSize.Round(1))
parseSize1 := size.ParseSize("2.3-asdajl")
fmt.Printf("%+v\n", parseSize1)
targetSize := size.ParseTargetSize("2.65MB", size.KB)
fmt.Printf("%+v", targetSize)
fmt.Printf("%+v", targetSize.String())
}Después de la conversión, se puede usar el método Round para modificar cuántos decimales conservar, también se puede usar el método String para obtener su forma de cadena, la salida de ejemplo es la siguiente
1.20MB
1.2
2713.60KB