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。

相关推荐
我是唐青枫10 分钟前
C#.NET PInvoke 深入解析:封送、内存布局与原生互操作实战
开发语言·c#·.net
萧瑟余晖17 分钟前
JPA 规范与 Hibernate 入门详解
后端·架构·hibernate
程序猿编码19 分钟前
纯C++轻量计算机视觉推理引擎:基于GGML的端侧CV模型部署技术全解析
开发语言·c++·计算机视觉·大模型·transformer
SEO_juper37 分钟前
外贸多语言站最隐蔽的流量杀手:hreflang 错了,谷歌把德语页推给美国人(附审计脚本)
开发语言·前端·python·seo·独立站·谷歌优化
程序员cxuan1 小时前
跟 WebUI 说再见了,最强 DeepSeek 桌面端来了!
人工智能·后端·程序员
geovindu1 小时前
CSharp: Strategy Pattern
开发语言·后端·c#·.net·.netcore·策略模式·行为模式
stark张宇1 小时前
从 Paxos 到 Raft:一文讲透分布式一致性与复制状态机
分布式·后端
RsThe1 小时前
Spring AI 2.0:Java AI 开发的分水岭
后端
n8n1 小时前
Spring AI 工具调用实战:模型自主决策、@Tool 方法封装与 ReAct 模式
后端
Tairitsu_H1 小时前
[C++] C++11新增构造:列表初始化和std::initializer_list
开发语言·c++·c++11·构造