golang 中array\slice\map之间的区别
声明和初始化
1、指明存储数据的类型;2、存储元素的数量
数组:
var array [5]int
array=[5]int{1,2,3,4,5}
以上两步可以省略为array:=[5]int{1,2,3,4,5} 或者 array:=[...]int{1,0,3,0,5} 也可以array:=[5]int{1:2,3:9}
切片:
slice:=make([]int,5)默认切片容量是其长度,也可以指定其容量slice:=make([]int,5,10)
slice:=[]int{1,2,3,4,5}或者slice:=[]int{4:2}切片不用数组那样制定[]中的值。
var nliSlice []int nil切片表示不存在的切片,slice:=[]int{}而空切片表示一个空集合,它们各有用处。
eg:
对于底层数组容量是k的切片slice[i:j]来说
长度:j-i len()
容量:k-i cap()
slice := []int{1, 2, 3, 4, 5}
slice1 := slice[:]
slice2 := slice[0:]
slice3 := slice[:5]
map:
dict=make(map[string]int)
dict["sa"] = 6
以上可以简写dict:=map[string]int{"sa":6,"yue":2}
使用
数组:
array[1]=3 //修改
切片:
slice[1]=3 // newSlice=append(newSlice,10,20,30)
map:
dict["sa"]=6
age,exists := dict["sa"] ;delete(dict,"alibaba")
遍历
for i,k = range array{
fmt.Println("索引:%d,值:%d\n",i,v)
}
for i,k = range slice{
fmt.Println("索引:%d,值:%d\n",i,v)
}
for key,value =range dict{
fmt.Println(key,value)
}