數據類型
基本數據類型
// 整型
int int8 int16 int32 int64
// 無符號整型
uint uint8 uint16 uint32 uint64 uintptr
// 浮點類型
float32 float64
// 復數
complex64 complex128
// 布爾類型
bool
// 字符
string
// 字節,uint8的別名
byte
// int32
//表示一個Unicode 碼點
rune
零值
當一個變量或者新值被創建時, 如果沒有為其明確指定初始值,go語言會自動初始化其值為此類型對應的零值, 各類型零值如下:
bool :false
integer :0
float :0.0
string:""
pointer, function, interface, slice, channel, map:nil
對于復合類型, go語言會自動遞歸地將每一個元素初始化為其類型對應的零值。比如:數組, 結構體 。
整型占用字節問題
int,uint整型:和機器平臺有關,最小32位,占用4字節,64位,占用8字節。
類型轉換
不支持不同類型之間隱式轉換,即便是類型別名和同類型之間也不行。
數值范圍
類型 | 長度(字節) | 數值范圍 |
---|---|---|
int8 | 1 | -128~127 (-2^(8-1) ~ 2^7-1) |
uint8 | 1 | 0~255 (0 ~ 2^8-1) |
int16 | 2 | -32768~32767 |
uint16 | 2 | 0~65535 |
int32 | 4 | -2^31 ~ 2^31-1 (-2147483648~2147483647) |
uint32 | 4 | 0~2^32-1 (0~4294967295) |
int64 | 8 | -2^63 ~2^63-1 |
uint64 | 8 | 0~2^63 |
int | ||
uint | ||
uintptr |
int占用字節數測試
//
//機器位數
cpu := runtime.GOARCH
//int占用位數
int_size := strconv.IntSize
string類型
string 是值類型。默認初始化值是空字符串,不是nil(string類型零值為空字符串)
func TestString(t *testing.T) {
var s string
t.Logf("%T %q", s, s) //string ""
}
本人Go語言接觸時間不長,文章內容難免有紕漏,如有錯誤還請指正,歡迎交流學習。