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。

相关推荐
用户384958730691 天前
Spring Boot 集成 Redis 的完整流程
后端
昨日的风1 天前
springboot 多数据源切换
后端
绝无仅有1 天前
mysql性能优化实战与总结
后端·面试·github
用户8356290780511 天前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
侃侃_天下1 天前
最终的信号类
开发语言·c++·算法
德育处主任1 天前
玩转 Strands:AI Agent 开发,原来可以这么简单!
后端·aigc
Undoom1 天前
大模型选型“炼狱”与终结:一份来自普通开发者的AI Ping深度评测报告
后端
用户4099322502121 天前
FastAPI的CI流水线怎么自动测端点,还能让Allure报告美到犯规?
后端·ai编程·trae
双向331 天前
Docker 镜像瘦身实战:从 1.2GB 压缩到 200MB 的优化过程
后端
Cyan_RA91 天前
计算机网络面试题 — TCP连接如何确保可靠性?
前端·后端·面试