Golang數字類型
原文見:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/04.5.md
整型 int 和浮點型 float
Go 語言支持整型和浮點型數字,並且原生支持複數,其中位的運算採用補碼(詳情參見 二的補碼 頁面)。
Go 也有基於架構的類型,例如:int、uint 和 uintptr。
這些類型的長度都是根據運行程序所在的操作系統類型所決定的:
int 和 uint 在 32 位操作系統上,它們均使用 32 位(4 個字節),在 64 位操作系統上,它們均使用 64 位(8 個字節)。
uintptr 的長度被設定爲足夠存放一個指針即可。
Go 語言中沒有 float 類型。
與操作系統架構無關的類型都有固定的大小,並在類型的名稱中就可以看出來:
整數
- int8 [-128 -> 127]
- int16 [-32768 -> 32767]
- int32 [-2,147,483,648 -> 2,147,483,647]
- int64 [-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807]
無符號
- uint8 [255]
- uint16[0 -> 65,535]
- uint32[0 -> 4,294,967,295]
- uint64[0 -> 18,446,744,073,709,551,615]
浮點型(IEEE-754 標準):
- float32(+- 1e-45 -> +- 3.4 * 1e38)
- float64(+- 5 * 1e-324 -> 107 * 1e308)
int 型是計算最快的一種類型。
整型的零值爲 0,浮點型的零值爲 0.0。
float32 精確到小數點後 7 位,float64 精確到小數點後 15 位。由於精確度的緣故,你在使用 == 或者 != 來比較浮點數時應當非常小心。你最好在正式使用前測試對於精確度要求較高的運算。
你應該儘可能地使用 float64,因爲 math 包中所有有關數學運算的函數都會要求接收這個類型。
你可以通過增加前綴 0 來表示 8 進制數(如:077),增加前綴 0x 來表示 16 進制數(如:0xFF),以及使用 e 來表示 10 的連乘(如: 1e3 = 1000,或者 6.022e23 = 6.022 x 1e23)。
你可以使用 a := uint64(0) 來同時完成類型轉換和賦值操作,這樣 a 的類型就是 uint64。
Go 中不允許不同類型之間的混合使用,但是對於常量的類型限制非常少,因此允許常量之間的混合使用