数组
初始化:
数组:var arr [len]type
实例 var arr [4]int32 默认为零值。
数组的长度也是数组类型的一部分,所以[4]int32 与 [2]int32不是同一类型的数组。
GO语言中的数组是一种值类型,所以可以通过 new() 来创建: var arr1 = new([5]int),arr1是指针类型。
由于数组传递给函数的形参会导致数组的拷贝。
由此可见,如果形参是特别大的数组会造成内存的消耗,有如下两种方案可以避免这种情况:1. 指针传递。2. 切片传递。
切片
切片是对数组一个连续片段的引用。
切片 var slice []type
实例 var arr []int32
切片的初始化 arr := make([]int,3) or make([]int,3,10),其中3是切片的长度,10是切片的容量。
切片的添加
arr = append(arr,2)或者 arr = append(arr,arr1...)
复制
copy(dest,src)
Map
map: var m map[keyType]valueType
实例:var m map[int]string
初始化 m := make(map[int]string) map是引用类型所以用make分配内存。
不要使用 new,永远用 make 来构造 map。如果你错误的使用 new() 分配了一个引用对象,你会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取了它的地址:之后操作会出错。
map操作
取值
val, ok := m[key]
删除
delete(m,key)
排序
map 默认是无序的,如果你要有序的输出,只能将key丢到一个切片中,然后对切片排序,再输出val。