package main import ( "fmt" "io" "git.milar.in/milarin/gmath" ) func FormatBytes[T gmath.Integer](bytes T) string { value := float64(bytes) if value >= 1000000000000 { return fmt.Sprintf("%.02fT", value/1000000000000) } else if value >= 1000000000 { return fmt.Sprintf("%.02fG", value/1000000000) } else if value >= 1000000 { return fmt.Sprintf("%.02fM", value/1000000) } else if value >= 1000 { return fmt.Sprintf("%.02fK", value/1000) } else { return fmt.Sprintf("%.02fB", value) } } func PrintByteChan(w io.Writer, ch <-chan byte) error { for b := range ch { if _, err := w.Write([]byte{b}); err != nil { return err } } fmt.Fprintln(w) return nil } func PrintByteChanFunc(w io.Writer) func(ch <-chan byte) { return func(ch <-chan byte) { if err := PrintByteChan(w, ch); err != nil { panic(err) // TODO error handling } } }