內(nèi)建容器
數(shù)組
數(shù)組是值類(lèi)型
聲明數(shù)組
var variable_name [SIZE] variable_type
var array1 [10]float32
array2 := [3]int{1,2,3}
array3 := [...]int{1,2,3}
var grid [4][5]bool
切片(Slice)
定義切片
你可以聲明一個(gè)未指定大小的數(shù)組來(lái)定義切片:
var identifier []type //切片不需要說(shuō)明長(zhǎng)度懈贺。
var slice1 []type = make([]type, len) //使用make()函數(shù)來(lái)創(chuàng)建切片
//也可以簡(jiǎn)寫(xiě)為
slice1 := make([]type, len)
make([]T, length, capacity)
//也可以指定容量,其中capacity為可選參數(shù)靴迫。這里 len 是數(shù)組的長(zhǎng)度并且也是切片的初始長(zhǎng)度藏澳。
切片初始化
s :=[] int {1,2,3 }
直接初始化切片策肝,[]表示是切片類(lèi)型喷市,{1,2,3}初始化值依次是1,2,3.其cap=len=3
s := arr[:]
初始化切片s,是數(shù)組arr的引用
s := arr[startIndex:endIndex]
將arr中從下標(biāo)startIndex到endIndex-1 下的元素創(chuàng)建為一個(gè)新的切片
s := arr[startIndex:]
缺省endIndex時(shí)將表示一直到arr的最后一個(gè)元素
s := arr[:endIndex]
缺省startIndex時(shí)將表示從arr的第一個(gè)元素開(kāi)始
s1 := s[startIndex:endIndex]
通過(guò)切片s初始化切片s1
s :=make([]int,len,cap)
通過(guò)內(nèi)置函數(shù)make()初始化切片s,[]int 標(biāo)識(shí)為其元素類(lèi)型為int的切片
空切片
一個(gè)切片在未初始化之前默認(rèn)為 nil瞄沙,長(zhǎng)度為 0
var numbers []int
if(numbers == nil){
fmt.Printf("切片是空的")
}
切片操作函數(shù)
- len() 獲取長(zhǎng)度
- cap() 獲取容量
- append() 追加元素索赏。添加元素如果超過(guò)cap,系統(tǒng)會(huì)重新分配更大的底層數(shù)組
- copy() copy切片
Map
定義 Map
可以使用內(nèi)建函數(shù) make 也可以使用 map 關(guān)鍵字來(lái)定義 Map:
/* 聲明變量届搁,默認(rèn) map 是 nil */
var map_variable map[key_data_type]value_data_type
/* 使用 make 函數(shù) */
map_variable = make(map[key_data_type]value_data_type)
m := map[string]string{
"a":"a",
"b":"b",
}
m2 = make(map[string]int)
var m3 map[sting]int
m2,m3都是nil map。如果不初始化 map,那么就會(huì)創(chuàng)建一個(gè) nil map卡睦。nil map 不能用來(lái)存放鍵值對(duì)
delete() 函數(shù)
delete() 函數(shù)用于刪除集合的元素, 參數(shù)為 map 和其對(duì)應(yīng)的 key