golang之切片

切片类似于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)
	}
}

将切片传入函数内跟传入数组一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值