數(shù)據(jù)類型
基本數(shù)據(jù)類型
// 整型
int int8 int16 int32 int64
// 無符號(hào)整型
uint uint8 uint16 uint32 uint64 uintptr
// 浮點(diǎn)類型
float32 float64
// 復(fù)數(shù)
complex64 complex128
// 布爾類型
bool
// 字符
string
// 字節(jié),uint8的別名
byte
// int32
//表示一個(gè)Unicode 碼點(diǎn)
rune
零值
當(dāng)一個(gè)變量或者新值被創(chuàng)建時(shí), 如果沒有為其明確指定初始值,go語言會(huì)自動(dòng)初始化其值為此類型對(duì)應(yīng)的零值, 各類型零值如下:
bool :false
integer :0
float :0.0
string:""
pointer, function, interface, slice, channel, map:nil
對(duì)于復(fù)合類型, go語言會(huì)自動(dòng)遞歸地將每一個(gè)元素初始化為其類型對(duì)應(yīng)的零值。比如:數(shù)組, 結(jié)構(gòu)體 。
整型占用字節(jié)問題
int,uint整型:和機(jī)器平臺(tái)有關(guān),最小32位,占用4字節(jié),64位,占用8字節(jié)。
類型轉(zhuǎn)換
不支持不同類型之間隱式轉(zhuǎn)換,即便是類型別名和同類型之間也不行。
數(shù)值范圍
| 類型 | 長(zhǎng)度(字節(jié)) | 數(shù)值范圍 |
|---|---|---|
| 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占用字節(jié)數(shù)測(cè)試
//
//機(jī)器位數(shù)
cpu := runtime.GOARCH
//int占用位數(shù)
int_size := strconv.IntSize
string類型
string 是值類型。默認(rèn)初始化值是空字符串,不是nil(string類型零值為空字符串)
func TestString(t *testing.T) {
var s string
t.Logf("%T %q", s, s) //string ""
}
本人Go語言接觸時(shí)間不長(zhǎng),文章內(nèi)容難免有紕漏,如有錯(cuò)誤還請(qǐng)指正,歡迎交流學(xué)習(xí)。