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

相关推荐
han_10 小时前
从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序
前端·javascript·面试
源代码•宸10 小时前
GoLang八股(Go语言基础)
开发语言·后端·golang·map·defer·recover·panic
iso少年12 小时前
Go 语言并发编程核心与用法
开发语言·后端·golang
蝎子莱莱爱打怪13 小时前
我的2025年年终总结
java·后端·面试
我的写法有点潮14 小时前
JS中对象是怎么运算的呢
前端·javascript·面试
镜花水月linyi14 小时前
Cookie、Session、JWT 的区别?
后端·面试
青莲84314 小时前
Java内存模型(JMM)与JVM内存区域完整详解
android·前端·面试
青莲84314 小时前
Java内存回收机制(GC)完整详解
java·前端·面试
CCPC不拿奖不改名14 小时前
python基础:python语言中的函数与模块+面试习题
开发语言·python·面试·职场和发展·蓝桥杯
测试老哥16 小时前
2026最新软件测试面试热点问题(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例