go语言的切片理解

Go 复制代码
var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	myslice := numbers4[4:6]
	//这打印出来长度为2
	fmt.Printf("myslice为 %d, 其长度为: %d\n", myslice, len(myslice))
	myslice = myslice[:cap(myslice)]
	//为什么 myslice 的长度为2,却能访问到第四个元素
	fmt.Printf("myslice的第四个元素为: %d", myslice[3])

为什么打印cap(mysslice) 等于6?

在 Go 语言中,切片的容量是从切片的第一个元素开始到底层数组末尾元素的个数。当你从数组 numbers4 中创建切片 myslice 时,虽然你只选择了索引4到索引6(不包括索引6)的元素,但是 myslice 的底层数组仍然是 numbers4,所以 myslice 的容量是从 numbers4 数组的第5个元素开始到 numbers4 数组末尾的元素个数,因此 cap(myslice) 的结果是6。

相关推荐
用户342323237631729 分钟前
边缘计算与云边协同——当采集不再只是“上传“
后端
壹方秘境40 分钟前
ApiCatcher支持抓包HTTP传输大文件的实现原理分享
前端·后端·客户端
神奇小汤圆1 小时前
2026最新·最全·最实用|Java岗面试真题(已收录GitHub)
后端
神奇小汤圆1 小时前
面试官当场让我手写Java线程安全工具类,我写完直接拿到了35K offer
后端
久美子2 小时前
Qoder 使用指南:从配置到落地
后端
tyung2 小时前
Go 手写 Wait-Free MPSC 无界队列:SwapPointer 实现多生产者无锁入队
后端·go
张不才2 小时前
CPU 100% 了怎么办?Java 性能排障的标准化操作
java·后端
鱼人2 小时前
Redis、网关负载均衡为什么不能用普通取模哈希?
后端
juejin9983 小时前
Claude Code Lab-3(下):三能力 MCP Server
后端
java小白小3 小时前
SpringBoot(07):事务管理——@Transactional 你真的用对了吗?
后端