为了账号安全,请及时绑定邮箱和手机立即绑定

go语言切片容量,举例说明

标签:
Go

    今天给大家说一说关于go语言切片容量,具体如下:

    go的切片相对于数组就是它的长度不再是固定的可以自动扩容,在定义上只是比数组少了固定长度。

    数组的声明方式:

var 数组变量名 [元素数量]T

    切片的声明方式:

var name []T

    切片的底层就是一个数组,所以我们可以基于数组通过切片表达式得到切片。 切片表达式中的lowhigh表示一个索引范围(左包含,又不包含),也就是下面代码中从数组a中选出1<=索引值<4的元素组成切片s,得到的切片长度=high-low,容量等于得到的切片的底层数组的容量。

   看到这个切片的说明,并给了示例如下:

func main() {
	a := [5]int{1, 2, 3, 4, 5}
	s := a[1:3]  // s := a[low:high]
	fmt.Printf("s:%v len(s):%v cap(s):%v\n", s, len(s), cap(s))
}

    输出:

s:[2 3] len(s):2 cap(s):4

    但子切片的容量是得到切片数组底层的数组的容量,从示例中看到底层数组的容量应该是5,为什么这里得到的确是4呢?这个是因为简单表达式中第一low值其实是底层数组的指针,high表示的从指针处开始切的长度,容量就是从指针处到底层数组结尾的长度。

    好啦,以上便是go语言切片容量,举例说明的全部内容,更多内容干货可关注慕课网~


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消