nil 和空切片有时,程序可能需要声明一个值为 nil 的切片(也称nil切片)。只要在声明时不做任何初始化,就会创建一个 nil 切片。
var num []int在 golang 中,nil 切片是很常见的创建切片的方法。nil 切片可以用于很多标准库和内置函数。在需要描述一个不存在的切片时,nil 切片会很好用。比如,函数要求返回一个切片但是发生异常的时候。下图描述了 nil 切片的状态:
空切片和 nil 切片稍有不同,下面的代码分别通过 make() 函数和字面量的方式创建空切片:
num := make([]int, 0) // 使用 make 创建空的整型切片num := []int{} // 使用切片字面量创建空的整型切片空切片的底层数组中包含 0 个元素,也没有分配任何存储空间。想表示空集合时空切片很有用,比如,数据库查询返回 0 个查询结果时。
不管是使用 nil 切片还是空切片,对其调用内置函数 append()、len() 和 cap() 的效果都是一样的。
共享底层数组的切片需要注意的是:现在两个切片 num 和 mynum 共享同一个底层数组。如果一个切片修改了该底层数组的共享部分,另一个切片也能感知到:
// 修改 mynum 索引为 1 的元素// 同时也修改了原切片 num 的索引为 2 的元素mynum[1] = 35把 35 赋值给 mynum 索引为 1 的元素的同时也是在修改 num 索引为 2 的元素:
切片只能访问到其长度内的元素
切片只能访问到其长度内的元素,试图访问超出其长度的元素将会导致语言运行时异常。在使用这部分元素前,必须将其合并到切片的长度里。下面的代码试图为 num 中的元素赋值:
// 修改 newnum 索引为 3 的元素// 这个元素对于 newnum 来说并不存在newnum[3] = 45上面的代码可以通过编译,但是会产生运行时错误:panic: runtime error: index out of range
USB Type-C连接器引脚和信号计划
格创东智入选工业互联网技术专业委员会,加速推动工业极客人才培养
单模与多模光纤连接器的区别与适用场景
多家知名投资机构增持苹果公司股票
电动汽车电源设计挑战:高压锂离子电池组管理系统
golan共享底层数组的切片
罗马仕移动电源怎么样_和小米移动电源哪个好
水泥烘干破碎机非传动侧轴承位磨损用这种技术现场修复,不得不称赞!
iQOO Neo7采用天玑9000+和120W快充组合方案
助焊剂残留物的类型/来源/形成过程/相关案例
信号放大器放在哪个位置可以实现速度最快
技嘉GA-8I945PM-RH主板内存供电电路图 (ISL6
搭载君正芯,实用又好玩的远程拾音神器Go-play!
iphone13mini和iphone13区别 哪款更值得入手
齿轮减速电机的日常维护
13年深耕物联网产业,无锡何以成功?
行业 | 被日本垄断的精密减速器,到底牛在哪?
射频通信系统的多址方式及其功率控制解析
酷冷至尊宣布推出新款小机箱 价售459元
高智能全项目土壤肥料养分检测仪的特点说明