上一篇我们已经知道go语言的切片基本用法
今天介绍append和copy
语法:
append(切片的变量名,元素)
用法:
//初始化一个切片
s1 := []string{"beijing","shanghai","guangzhou"}
fmt.Println(s1) //[beijing shanghai guangzhou]
//往s1添加一个元素 shenzhen
s1 = append(s1,"shenzhen")
fmt.Println(s1)//[beijing shanghai guangzhou shenzhen]
通过上述示例,我们就知道如何使用append
往切片中添加元素了
需要注意的是 添加元素的过程中 必须用所操作的的变量去接收
还是引用上述的例子
每次添加元素会导致切片的的容量按照一定的规则进行扩展,规则如下:
我们通过代码来检验一下!
//初始化一个切片
s1 := []string{"beijing","shanghai","guangzhou"}
//打印容量
fmt.Println(cap(s1))//3
//往s1添加一个元素 shenzhen
s1 = append(s1,"shenzhen")
fmt.Println(cap(s1))//6
//往s1添加一个元素 shenzhen
s1 = append(s1,"hangzhou")
fmt.Println(cap(s1))//6
...
表示切片
s1 := []string{"beijing","shanghai","guangzhou"}
s2 := []string{"wuhan","xian","suzhou"}
//将s2添加到s1中
s1 = append(s1,s2...)
fmt.Println(s1)
在写代码之前,我们可以把append
这个函数理解成 参数1的切片 加上参数2的切片或者是单个元素
组成一个新的切片
所以,原理是删除的元素的左边作为一个左切片,删除的元素的右边作为一个右切片
左右相加就成功组成一个新的切片作为删除后的结果了!
s1 := []string{"beijing","shanghai","guangzhou"}
s2 := []string{"wuhan","xian","suzhou"}
//将s2添加到s1中
s1 = append(s1,s2...)
fmt.Println(cap(s1))
//去掉s1中的wuhan
s1 = append(s1[:5],s1[6:]...)
fmt.Println(s1)//此时已经去掉了wuhan
fmt.Println(cap(s1))
通过上面的示例 我们也可以看到 删除元素是不影响 切片的容量的!
//创建切片1
c1 := []int{1,2,3}
//定义切片
c2 := make([]int,3)
//复制c1到c2
copy(c2,c1)
fmt.Println(c2)
//此时去修改c1的值的元素值 那么是否会影响到c2呢
c1[0] = 6
fmt.Println(c1,c2) //[6 2 3] [1 2 3]
这里的make 会单独出来讲!
可以看到 复制之后 去改变原数据的值是不会影响到新复制的数据值
关于append
和copy
的介绍现到这里,有什么不清楚和有问题的地方欢迎在评论区留言
未完待续。。。