go学习笔记(8)复合类型(2)切片(1)
今天来梳理一下切片。
在go语言中,基本上任何需要保存一连串数据的地方都可以用切片。切片没有长度的限制。
切片与数组的操作相似。一对方括号加上类型就能定义一个切片了,看起来就像是在定义数组时没有写数组大小。
1 | var x = []int{1, 2, 3} |
指定某几个元素值,没指定的会置为零值:
1 | var x = []int{1, 4: 5, 9: 10} |
上述代码定义了一个大小为10的切片,其值为:[1 0 0 0 5 0 0 0 0 10]
定义切片的切片:
1 | var x [][]int |
使用方括号读写切片中的值:
1 | x[0] = 123 |
如果定义切片时没有指定切片的内容,那这个切片会被置为切片的零值 nil
。
1 | var x []int |
在 go 语言中 nil
与其他语言的 null
类似,但也有一点点不同。nil
没有类型,也不是关键字或保留字。
切片是不能比较的,但它可以与 nil
进行比较:
1 | fmt.Println(x == nil) |
go 语言几个内置的用于切片处理的函数:
len
使用 len
可以获取切片的长度。
1 | var x = []int{1, 2, 3} |
append
使用 append
可以向切片追加元素:
1 | var x []int |
append
至少要两个输入,一个切片,以及一个与该切片同类型的值。它会返回一个新的切片。
可以一次追加多个元素:
1 | var x = []int{1, 2} |
通过...
操作符,一个切片可以被展开追加到加一个切片上:
1 | var x = []int{7, 8, 9} |