Golang对nil的Slice和空Slice处理是一致的吗

Go中,nilslice和空的slice并不完全相同,尽管它们的许多行为在很多情况下是相似的。

nil slice

go 复制代码
var s []int

在这种情况下,s是一个nilslice。它的容量和长度都为0,且没有指向任何底层的数组。

空slice

go 复制代码
s := []int{}
// s := make([]int, 0)

上述两种情况下,s都是一个空的slice,它的长度和容量都为0,但是它又一个非nil的零长度的底层数组。

在许多操作中,nil和空slice的行为是一样的,比如获取长度(len()),容量(cap()),追加元素(append())等。但是在与nil比较的时候,就不一样了。

go 复制代码
var s1 []int
s2 := []int{}

fmt.Println(s1 == nil) // true
fmt.Println(s2 == nil) // false

最后给大家推荐一个LinuxC/C++高级架构系统教程的学习资源与课程,可以帮助你有方向、更细致地学习C/C++后端开发,具体内容请见 https://xxetb.xetslk.com/s/1o04uB

相关推荐
数据分析螺丝钉34 分钟前
力扣第240题“搜索二维矩阵 II”
经验分享·python·算法·leetcode·面试
无理 Java40 分钟前
【技术详解】SpringMVC框架全面解析:从入门到精通(SpringMVC)
java·后端·spring·面试·mvc·框架·springmvc
吃着火锅x唱着歌1 小时前
Redis设计与实现 学习笔记 第五章 跳跃表
golang
鱼跃鹰飞1 小时前
Leecode热题100-295.数据流中的中位数
java·服务器·开发语言·前端·算法·leetcode·面试
TANGLONG2221 小时前
【C语言】数据在内存中的存储(万字解析)
java·c语言·c++·python·考研·面试·蓝桥杯
狐小粟同学3 小时前
链表面试编程题
数据结构·链表·面试
技术卷4 小时前
Redis数据库与GO完结篇:redis操作总结与GO使用redis
数据库·redis·golang
码农超哥同学4 小时前
Python知识点:如何使用EdgeX Foundry与Python进行边缘计算
开发语言·python·面试·编程·边缘计算
码农超哥同学4 小时前
Python知识点:如何使用OpenFaaS与Python进行无服务器边缘计算
python·面试·serverless·编程·边缘计算
杰哥在此5 小时前
Python知识点:如何使用Hadoop与Python进行大数据处理
开发语言·hadoop·python·面试·编程