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。