Go基本數據類型:bool int float complex string slice map interface channel

A 基本

1 布爾類型 bool

在格式化輸出時,你可以使用 %t 來表示你要輸出的值爲布爾型。
布爾型的值只可以是常量 true 或者 false。

2 數字類型:int8後面的8表示的是2^8

儘可能地使用 float64,因爲 math 包中所有有關數學運算的函數都會要求接收這個類型。

Go 是強類型語言,不會進行隱式轉換.。所以Go 中不允許不同類型之間的混合使用,但允許常量之間的混合使用。

##有符號整數
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)
int( 32 位操作系統上64 位,64 位操作系統64 位)

##無符號整數
uint8(0 -> 255)
uint16(0 -> 65,535)
uint32(0 -> 4,294,967,295)
uint64(0 -> 18,446,744,073,709,551,615)
uint ( 32 位操作系統上64 位,64 位操作系統64 位)

##浮點型
float32(+- 1e-45 -> +- 3.4 * 1e38)
float64(+- 5 1e-324 -> 107 1e308)
#無float類型

#複數
Go 擁有以下複數類型:
complex64 (32 位實數和虛數)
complex128 (64 位實數和虛數)

複數使用 re+imI 來表示,其中 re 代表實數部分, im 代表虛數部分,I 代表根號負 1
var c1 complex64 = 5 + 10i
fmt.Printf("The value is: %v", c1)  // 輸出: 5 + 10i

3 字符類型

1)byte 類型是 uint8的別名:下面三個表達式等價

var ch byte = 'A' 
var ch byte = 65
var ch byte = '\x41'  // \x 總是緊跟着長度爲 2 的 16 進制數

2) rune 是 int32 的別名。

Unicode 至少佔用 2 個字節,所以GO使用 int16 或者 int 類型來表示。如果需要使用到 4 字節,則會加上 \U 前綴;前綴 \u 則總是緊跟着長度爲 4 的 16 進制數,前綴 \U緊跟着長度爲 8 的 16 進制數。

var ch int = '\u0041'
var ch2 int = '\u03B2'
var ch3 int = '\U00101234'
fmt.Printf("%d - %d - %d\n", ch, ch2, ch3) // integer
fmt.Printf("%c - %c - %c\n", ch, ch2, ch3) // character
fmt.Printf("%X - %X - %X\n", ch, ch2, ch3) // UTF-8 bytes
fmt.Printf("%U - %U - %U", ch, ch2, ch3) // UTF-8 code point

B string

C slice

D map

擴容會建立一個大小是原來2倍的新的表,將舊的bucket搬到新的表中之後,並不會將舊的bucket從oldbucket中刪除,而是加上一個已刪除的標記。

當hash表擴容之後,需要將那些舊的pair重新哈希到新的table上,這個工作是逐步的完成(在insert和remove時每次搬移1-2個pair)

E func

F interface

G channel

F nil

未初始化:布爾類型是false,整型是0,字符串是"",而指針,函數,interface,slice,channel和map的零值都是nil。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章