Go數據類型
下面列出 Go 語言中全部的內置類型,以供參考,更多細節可以前往參考手冊-類型。
布爾類型
布爾類型只有真值和假值。
| 類型 | 描述 |
|---|---|
bool | true為真值,false為假值 |
TIP
在 Go 中,整數 0 並不代表假值,非零整數也不能代表真值,即數字無法代替布爾值進行邏輯判斷,兩者是完全不同的類型。
整型
Go 中為不同位數的整數分配了不同的類型,主要分為無符號整型與有符號整型。
| 序號 | 類型和描述 |
|---|---|
uint8 | 無符號 8 位整型 |
uint16 | 無符號 16 位整型 |
uint32 | 無符號 32 位整型 |
uint64 | 無符號 64 位整型 |
int8 | 有符號 8 位整型 |
int16 | 有符號 16 位整型 |
int32 | 有符號 32 位整型 |
int64 | 有符號 64 位整型 |
uint | 無符號整型 至少 32 位 |
int | 整型 至少 32 位 |
uintptr | 等價於無符號 64 位整型,但是專用於存放指針運算,用於存放死的指針地址。 |
浮點型
IEEE-754浮點數,主要分為單精度浮點數與雙精度浮點數。
| 類型 | 類型和描述 |
|---|---|
float32 | IEEE-754 32 位浮點數 |
float64 | IEEE-754 64 位浮點數 |
復數類型
| 類型 | 描述 |
|---|---|
complex128 | 64 位實數和虛數 |
complex64 | 32 位實數和虛數 |
字符類型
go 語言字符串完全兼容 UTF-8
| 類型 | 描述 |
|---|---|
byte | 等價 uint8 可以表達 ANSCII 字符 |
rune | 等價 int32 可以表達 Unicode 字符 |
string | 字符串即字節序列,可以轉換為[]byte類型即字節切片 |
派生類型
| 類型 | 例子 |
|---|---|
| 數組 | [5]int,長度為 5 的整型數組 |
| 切片 | []float64,64 位浮點數切片 |
| 映射表 | map[string]int,鍵為字符串類型,值為整型的映射表 |
| 結構體 | type Gopher struct{},Gopher 結構體 |
| 指針 | *int,一個整型指針。 |
| 函數 | type f func(),一個沒有參數,沒有返回值的函數類型 |
| 接口 | type Gopher interface{},Gopher 接口 |
| 通道 | chan int,整型通道 |
零值
官方文檔中零值稱為zero value,零值並不僅僅只是字面上的數字零,而是一個類型的空值或者說默認值更為准確。
| 類型 | 零值 |
|---|---|
| 數字類型 | 0 |
| 布爾類型 | false |
| 字符串類型 | "" |
| 數組 | 固定長度的對應類型的零值集合 |
| 結構體 | 內部字段都是零值的結構體 |
| 切片,映射表,函數,接口,通道,指針 | nil |
nil
nil類似於其它語言中的none或者null,但並不等同。nil僅僅只是一些引用類型的零值,並且不屬於任何類型,從源代碼中的nil可以看出它僅僅只是一個變量。
go
var nil Type並且nil == nil這樣的語句是無法通過編譯的。
