func GiBToByte(n interface{}) int64 {
	switch v := n.(type) {
	case int:
		return int64(v * int(math.Pow(1024, 3)))
	case int32:
		return int64(v * int32(math.Pow(1024, 3)))
	case int64:
		return v * int64(math.Pow(1024, 3))
	}
	panic(fmt.Errorf("non-integer type %T for value", n))
}
func GiBToByte(n interface{}) int64 {
	switch v := n.(type) {
	case int:
		return int64(v * int(math.Pow(1024, 3)))
	case int32:
		return int64(v * int32(math.Pow(1024, 3)))
	case int64:
		return v * int64(math.Pow(1024, 3))
	}
	panic(fmt.Errorf("non-integer type %T for value", n))
}
func GiBToByte ( n interface { } ) int64 { switch v := n . ( type ) { case int : return int64 ( v * int ( math . Pow ( 1024 , 3 ) ) ) case int32 : return int64 ( v * int32 ( math . Pow ( 1024 , 3 ) ) ) case int64 : return v * int64 ( math . Pow ( 1024 , 3 ) ) } panic ( fmt . Errorf ( " " , n ) ) }
// GiBToByte returns n*1024^3.
//
// The output is returned as int64 - if another type is needed, it needs to be
// cast. Remember that int32 overflows at around 2GiB and uint32 will overflow at 4GiB.
GiBToByte returns n * 1024^3 . The output is returned as int64 - if another type is needed it needs to be cast . Remember that int32 overflows at around 2GiB and uint32 will overflow at 4GiB .