整型是所有編程語言里最基礎的數據類型。 Go 語言支持如下所示的這些整型類型。

需要注意的是, int 和 int32 在 Go 語言里被認為是兩種不同的類型,編譯器也不會幫你自動做類型轉換,
比如以下的例子會有編譯錯誤:
var value2 int32
value1 := 64 // value1 將會被自動推導為 int 類型
value2 = value1 // 編譯錯誤
編譯錯誤類似于:
cannot use value1 (type int) as type int32 in assignment 。
使用強制類型轉換可以解決這個編譯錯誤:
value2 = int32(value1) // 編譯通過
當然,開發者在做強制類型轉換時,需要注意數據長度被截短而發生的數據精度損失
(比如將浮點數強制轉為整數)和值溢出(值超過轉換的目標類型的值范圍 時)問題。
整型的使用細節:
( 1 ) golang 整數類型分為:有符號和無符號, int 和 uint 的大小和系統有關;
( 2 ) golang 整型默認申明為 int ;
( 3 ) fmt.Printf("num 的數據類型是 %T ,占的字節數是 %d", num,unsafe.Sizeof(num))
( 4 ) golang 使用整數類型時,遵從保小不保大原則,即在保證程序正常運行的
情況下,? 盡量使用占用空間小的數據類型;
( 5 ) bit :計算機中最小的存儲單位, byte :計算機中基本的存儲單元;
計算類型的大小 :
package main
import (
"fmt"
"unsafe"
)
func main() {
var a int ;
fmt.Printf("%T unsafe = %d\n",a,unsafe.Sizeof(a))
}
Go 語言中 unsafe.Sizeof() 函數:
1 、對不同長度的字符串, unsafe.Sizeof() 函數的返回值都為 16 ,這是因為string 類型對應一個結構體,該結構體有兩個域,第一個域指向該字符串的指針,第二個域為字符串的長度,每個域占 8 個字節,但是并不包含指針指向的字符串的內容,這就解釋了unsafe.Sizeof() 函數對 string 類型的返回值始終是 16 。
2 、對不同長度的數組, unsafe.Sizeof() 函數的返回值隨著數組中的元素個數的增加而增加, 這是因為unsafe.Sizeof() 函數總是在編譯期就進行求值,而不是在運行時,這就意味著,unsafe.Sizeof() 函數的返回值可以賦值給常量,在編譯期求值,意味著可以獲得數組所占的內存大小,因為數組總是在編譯期就指明自己的容量,并且在以后都是 不可變的。
3 、對所含元素個數不同的切片, unsafe.Sizeof() 函數的返回值都為 24 ,這是因為對切片來說,
unsafe.Sizeof() 函數返回的值對應的是切片的描述符,而不是切片所指向的內存的大小, 因此都是24。