1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // Copyright 2009 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package main
- import "fmt"
- type ByteSize float64
- const (
- _ = iota // ignore first value by assigning to blank identifier
- KB ByteSize = 1 << (10 * iota)
- MB
- GB
- TB
- PB
- EB
- ZB
- YB
- )
- func (b ByteSize) String() string {
- switch {
- case b >= YB:
- return fmt.Sprintf("%.2fYB", b/YB)
- case b >= ZB:
- return fmt.Sprintf("%.2fZB", b/ZB)
- case b >= EB:
- return fmt.Sprintf("%.2fEB", b/EB)
- case b >= PB:
- return fmt.Sprintf("%.2fPB", b/PB)
- case b >= TB:
- return fmt.Sprintf("%.2fTB", b/TB)
- case b >= GB:
- return fmt.Sprintf("%.2fGB", b/GB)
- case b >= MB:
- return fmt.Sprintf("%.2fMB", b/MB)
- case b >= KB:
- return fmt.Sprintf("%.2fKB", b/KB)
- }
- return fmt.Sprintf("%.2fB", b)
- }
- func main() {
- fmt.Println(YB, ByteSize(1e13))
- }
|