package utils import ( "fmt" "strconv" ) const ( _ = 1.0 << (10 * iota) // ignore first value by assigning to blank identifier KB MB GB TB PB EB ) func Format(b float64) string { multiple := "" value := b switch { case b >= EB: value /= EB multiple = "EB" case b >= PB: value /= PB multiple = "PB" case b >= TB: value /= TB multiple = "TB" case b >= GB: value /= GB multiple = "GB" case b >= MB: value /= MB multiple = "MB" case b >= KB: value /= KB multiple = "KB" case b == 0: return "0" default: return strconv.FormatInt(int64(b), 10) + "B" } return fmt.Sprintf("%.2f%s", value, multiple) }