Golang : How to declare kilobyte, megabyte, gigabyte, terabyte and so on?
Problem :
How to declare one MegaByte in Golang so that I can use it to calculate filesize allocation?
Solution :
MB is number 2(counting from zero) in the constants order of Golang's builtin byte size enumeration.
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
)
Therefore, to declare one mega byte, one would declare it in this way :
1 << (10 * 2)
Below is a full example on how to declare kilobyte up to yottabyte.
package main
import "fmt"
var sizeKB = 1 << (10 * 1) // 1 refers to the constants ByteSize KB
var sizeMB = 5 << (10 * 2) // 2 refers to the constants ByteSize MB -- example of declaring 5 MB
var sizeGB = 1 << (10 * 3) // 3 refers to the constants ByteSize GB
var sizeTB int64 = 1 << (10 * 4) // 4 refers to the constants ByteSize TB -- without int64 will cause overflow error
var sizePB int64 = 1 << (10 * 5) // 5 refers to the constants ByteSize PB
var sizeEB int64 = 1 << (10 * 6) // 6 refers to the constants ByteSize EB
var sizeZB complex128 = 1 << (10 * 7) // 7 refers to the constants ByteSize ZB -- only complex128 can handle this big in Golang
var sizeYB complex128 = 1 << (10 * 8) // 8 refers to the constants ByteSize YB
func main() {
fmt.Printf("Size(raw) : %d Bytes \n", sizeKB)
fmt.Printf("Size(raw) : %d Bytes \n", sizeMB)
fmt.Printf("Size(raw) : %d Bytes \n", sizeGB)
fmt.Printf("Size(raw) : %d Bytes \n", sizeTB)
fmt.Printf("Size(raw) : %d Bytes \n", sizePB)
fmt.Printf("Size(raw) : %d Bytes \n", sizeEB)
fmt.Printf("Size(raw) : %f Bytes \n", sizeZB)
fmt.Printf("Size(raw) : %f Bytes \n", sizeYB)
fmt.Println("--------------------------------------------")
fmt.Printf("Size : %d KiloByte \n", sizeKB/sizeKB)
fmt.Printf("Size : %d MegaByte \n", sizeMB/(1 << (10 * 2))) // example of 5 MB
fmt.Printf("Size : %d GigaByte \n", sizeGB/(1 << (10 * 3)))
fmt.Printf("Size : %d TeraByte \n", sizeTB/(1 << (10 * 4)))
fmt.Printf("Size : %d PetaByte \n", sizePB/(1 << (10 * 5)))
fmt.Printf("Size : %d ExaByte \n", sizeEB/(1 << (10 * 6)))
fmt.Printf("Size : %f ZettaByte \n", sizeZB/(1 << (10 * 7)))
fmt.Printf("Size : %f YottaByte \n", sizeYB/(1 << (10 * 8)))
}
Output :
Size(raw) : 1024 Bytes
Size(raw) : 5242880 Bytes
Size(raw) : 1073741824 Bytes
Size(raw) : 1099511627776 Bytes
Size(raw) : 1125899906842624 Bytes
Size(raw) : 1152921504606846976 Bytes
Size(raw) : (1180591620717411303424.000000+0.000000i) Bytes
Size(raw) : (1208925819614629174706176.000000+0.000000i) Bytes
Size : 1 KiloByte
Size : 5 MegaByte
Size : 1 GigaByte
Size : 1 TeraByte
Size : 1 PetaByte
Size : 1 ExaByte
Size : (1.000000+0.000000i) ZettaByte
Size : (1.000000+0.000000i) YottaByte
References :
See also : Golang : How to split or chunking a file to smaller pieces?
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+6.7k Golang : Fibonacci number generator examples
+8.5k Golang : HTTP Routing with Goji example
+10k Fix ERROR 1045 (28000): Access denied for user 'root'@'ip-address' (using password: YES)
+32.3k Golang : Regular Expression for alphanumeric and underscore
+39.6k Golang : UDP client server read write example
+4.8k Swift : Convert (cast) Float to Int or Int32 value
+6.7k Golang : Takes a plural word and makes it singular
+15.8k Golang : Loop each day of the current month example
+28.8k Golang : Record voice(audio) from microphone to .WAV file
+15.6k Golang : Read a file line by line
+10.2k Golang : Generate 403 Forbidden to protect a page or prevent indexing by search engine
+4.7k Golang : Get a list of crosses(instruments) available to trade from Oanda account