GO 语言容器
1. 数组的比较,很方便直接用== !=
2. 多维数组的声明
// 声明并初始化数组中索引为 1 和 3 的元素
array = [4][2]int{1: {20, 21}, 3: {40, 41}}
// 声明并初始化数组中指定的元素,即外面第一个元素(数组)中的第一个子元素赋值为20
array = [4][2]int{1: {0: 20}, 3: {1: 41}}
3. 切片(切片(slice)是对数组的一个连续片段的引用,所以切片是一个引用类型()
取出的元素数量为:结束位置 - 开始位置;
取出元素不包含结束位置对应的索引,切片最后一个元素使用 slice[len(slice)] 获取
两者同时为 0 时,等效于空切片,一般用于切片复位。
3.1 声明切片
// 声明整型切片
var numList []int
// 声明一个空切片,不为nil,因为已分配内存,切片不能直接判断是否相等
var numListEmpty = []int{}
//使用make生成切片,其中 Type 是指切片的元素类型,size 指的是为这个类型分配多少个元素,cap 为预分配的元素数量,
这个值设定后不影响 size,只是能提前分配空间,降低多次分配空间造成的性能问题
make( []Type, size, cap )
//添加元素
var a = []int{1,2,3}
a = append([]int{0}, a...) // 在开头添加1个元素
a = append([]int{-3,-2,-1}, a...) // 在开头添加1个切片
var a []int
a = append(a[:i], append([]int{x}, a[i:]...)...) // 在第i个位置插入x
a = append(a[:i], append([]int{1,2,3}, a[i:]...)...) // 在第i个位置插入切片
//copy() 函数的使用格式
copy( destSlice, srcSlice []T) int
//删除元素头部
a = []int{1, 2, 3}
a = a[1:] // 删除开头1个元素
a = a[N:] // 删除开头N个元素
//删除中部元素
a = []int{1, 2, 3, ...}
a = append(a[:i], a[i+1:]...) // 删除中间1个元素
a = append(a[:i], a[i+N:]...) // 删除中间N个元素
a = a[:i+copy(a[i:], a[i+1:])] // 删除中间1个元素
a = a[:i+copy(a[i:], a[i+N:])] // 删除中间N个元素
4. map
var mapname map[keytype]valuetype
mapname 为 map 的变量名。
keytype 为键类型。
valuetype 是键对应的值类型。
//map 容量
map2 := make(map[string]float, 100)
7. 遍历列表
l := list.New()
// 尾部添加
l.PushBack("canon")
// 头部添加
l.PushFront(67)
for i := l.Front(); i != nil; i = i.Next() {
fmt.Println(i.Value)
}
8. new 和 make 的区别
new 只分配内存,而 make 只能用于 slice、map 和 channel 的初始化
9. goto与return