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。

相关推荐
席万里18 小时前
通过Golang订阅binlog实现轻量级的增量日志解析,并解决缓存不一致的开源库cacheflow
缓存·golang·开源
nvd1118 小时前
Python 迭代器 (Iterator) vs. 生成器 (Generator)
开发语言·python
HalvmånEver18 小时前
Linux:基础开发工具(三)
linux·运维·服务器·开发语言·学习·gcc/g++
后端小张18 小时前
【JAVA 进阶】Spring Boot 注解体系与工程实践
java·开发语言·spring boot·后端·spring·spring cloud·java-ee
9号达人18 小时前
接口设计中的扩展与组合:一次Code Review引发的思考
java·后端·面试
倔强的石头10618 小时前
Rust实战:使用Axum和SQLx构建高性能RESTful API
开发语言·rust·restful
q***465219 小时前
对基因列表中批量的基因进行GO和KEGG注释
开发语言·数据库·golang
柠石榴19 小时前
GO-1 模型本地部署完整教程
开发语言·后端·golang
大Null19 小时前
Linux安装GO环境
linux·golang