數(shù)組
初始化:
數(shù)組:var arr [len]type
實(shí)例 var arr [4]int32 默認(rèn)為零值。
數(shù)組的長(zhǎng)度也是數(shù)組類(lèi)型的一部分,所以[4]int32 與 [2]int32不是同一類(lèi)型的數(shù)組。
GO語(yǔ)言中的數(shù)組是一種值類(lèi)型,所以可以通過(guò) new() 來(lái)創(chuàng)建: var arr1 = new([5]int),arr1是指針類(lèi)型。
由于數(shù)組傳遞給函數(shù)的形參會(huì)導(dǎo)致數(shù)組的拷貝。


由此可見(jiàn),如果形參是特別大的數(shù)組會(huì)造成內(nèi)存的消耗,有如下兩種方案可以避免這種情況:1. 指針傳遞。2. 切片傳遞。
切片
切片是對(duì)數(shù)組一個(gè)連續(xù)片段的引用。
切片 var slice []type
實(shí)例 var arr []int32
切片的初始化 arr := make([]int,3) or make([]int,3,10),其中3是切片的長(zhǎng)度,10是切片的容量。
切片的添加
arr = append(arr,2)或者 arr = append(arr,arr1...)
復(fù)制
copy(dest,src)

Map
map: var m map[keyType]valueType
實(shí)例:var m map[int]string
初始化 m := make(map[int]string) map是引用類(lèi)型所以用make分配內(nèi)存。
不要使用 new,永遠(yuǎn)用 make 來(lái)構(gòu)造 map。如果你錯(cuò)誤的使用 new() 分配了一個(gè)引用對(duì)象,你會(huì)獲得一個(gè)空引用的指針,相當(dāng)于聲明了一個(gè)未初始化的變量并且取了它的地址:之后操作會(huì)出錯(cuò)。

map操作
取值
????????????val, ok := m[key]
刪除
????????????delete(m,key)


排序
map 默認(rèn)是無(wú)序的,如果你要有序的輸出,只能將key丟到一個(gè)切片中,然后對(duì)切片排序,再輸出val。