Go语言:切片,切片与数组

切片

相当于是C语言中的动态数组,但在Go的语法下变得简洁清晰。而切片这个定义也可以理解为切出一片空间使用

func main() {
	x := make([]int, 0, 5)//创建一个长度为0,容量为5的切片
	
	//[]int 是动态数组类型,也可以开辟其他集合类型的空间,如通道,map
	for i := 0; i < 8; i++ {
		x = append(x, i)
	//在切片的最后位置追加数据,当超出容量的时候,容量会自动翻倍。如此时追加的数据超过5个变为8个,容量翻倍为10
		
		//出于安全考虑,当新的空间开辟以后,新的空间地址可能与x的空间不同,要捕获到并赋给x
	}
	
	fmt.Println(x, len(x), cap(x))//len()测量有效元素的个数
	                             //cap()测量容量大小,二者都是go的内置函数
}	                             
输出:[0 1 2 3 4 5 6 7] 8 10

切片和数组

在数组中切片是指向数组的子集,切片改变,相应的数组元素也会改变

func main() {
	x := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
	s := x[2:5]
	//创建切片,指向数组的2-4号元素[2,5),切片容量长度为从2号开始到最后一号元素的的长度,即len(x)-2
	
	fmt.Println(s)//输出:3 4 5
	
	s[1] += 3// 即x[3]+=3.若令s[8]=9,则越界不合法。
	
	fmt.Println(x[3])//输出:7 (4+3)
	fmt.Println(len(s), cap(s), len(x), cap(x))//输出:3 7 9 9
}

其他创建切片的方式

s:=x[:4]	取值范围[0,4)
s:=x[:]	    取值范围[0,len(x))
s:=x[5:]	取值范围[5,len(x))
s:=x[3:len(x)]  ...
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值