这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
1.切片类型
切片类型是一个引用类型,切片的结构体由3部分构成,1.指向一个数组的指针pointer,2.当前切片的长度len,3.当前切片的容量cap,cap总是大于或等于len。
切片有点像c语言里的指针。指针可以做运算,但代价是内存操作越界。切片在指针的基础上增加了大小,约束了切片对应的内存区域。在切片使用过程中,无法对切片内部的地址和大小进行手动调整,因此切片比指针更安全、强大。
直接申明新的切片
切片类型的申明格式如下: var name []Type
在申明了新的切片后,可以使用append()函数向切片中添加元素。如果需要创建一个指定长度的切片,则可以使用make()函数,格式如下:
make([]Type,size,cap),其中Type是切片的元素类型,size是指为这个类型分配多少个元素,cap是指预分配的元素数量(设定这个值并不影响size,只是能提前分配空间,可以降低多次分配空间造成的性能问题)。
如:slice2 := make([]int,6,10)
map类型
map是一种元素对的无序集合,包括一个key和一个value,map是引用类型,可以使用如下方式申明:
var name map[key_type]value_type
在申明时不需要知道map的长度,因为map是可以动态增长的。未初始化的map的值时nil。使用函数len()可以获取map中元素对的数目
也可以预先申明map的初始容量,当map增长到容量上限时,如果再增加新的元素对,map的大小会自动加1 map := make(map[string]float32,100)
用切片作为map的值
map1 := make(map[int] []int)
map2 := make(map[int] *[]int)