切片类似于java中的集合,底层为数组,当元素个数达到一定量,则自动进行扩容
1.声明切片的两种方式
arr := [...]int{1, 5, 6}
s := arr[:2] //方法1
s := make([]int, 5, 10) //方法2
方法1: 在数组上截取一部分,分号左侧为开始位置,没有数则为0,分号右侧为结束位置,没有数代表数组最后一位
方法2: 使用make进行生成切片。参数1 为切片元素的类型,参数2为切片长度,参数3为容量
2.切片的遍历
for k, v := range s {
fmt.Printf("key:%d;val:%d\n", k, v)
}
3.切片追加元素
s = append(s, 7, 9)
append方法将1个或多个相同类型的元素追加到s切片末尾并返回新的切片
4.复制
arr := [...]int{1, 5, 6}
s := arr[:2] //声明切片
s2 := s //复制
s[0] = 99 //此时s[0] 为99, s2[0] 为99
因为s2和s切片为同一个底层数组
如果复制后不想互相影响可以使用
copy(s, s3)
使用copy函数进行复制,两者的值改变后,不会互相影响
5.切片作为函数参数
func main() {
arr := [...]int{1, 5, 6}
s := arr[:2]
s3 := make([]int, 5)
copy(s, s3)
showSlice(s3)
}
func showSlice(arr []int) {
for k, v := range arr {
fmt.Printf("key:%d;val:%d\n", k, v)
}
}
将切片传入函数内跟传入数组一样