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

相关推荐
想搞艺术的程序员2 小时前
深入 NSQ 延迟消息实现原理:设计巧思与性能优化
性能优化·golang·nsq
WYiQIU3 小时前
面了一次字节前端岗,我才知道何为“造火箭”的极致!
前端·javascript·vue.js·react.js·面试
努力学算法的蒟蒻3 小时前
day20(11.21)——leetcode面试经典150
面试
纵有疾風起6 小时前
C++——多态
开发语言·c++·经验分享·面试·开源
ANYOLY6 小时前
Redis 面试题库
java·redis·面试
顾林海7 小时前
从0到1搭建Android网络框架:别再让你的请求在"路上迷路"了
android·面试·架构
拉不动的猪7 小时前
前端三大权限场景全解析:设计、实现、存储与企业级实践
前端·javascript·面试
uhakadotcom8 小时前
Loguru 全面教程:常用 API 串联与实战指南
后端·面试·github
培风图南以星河揽胜10 小时前
Java实习模拟面试|离散数学|概率论|金融英语|数据库实战|职业规划|期末冲刺|今日本科计科要闻速递:技术分享与学习指南
java·面试·概率论
艾斯比的日常12 小时前
JVM 内存结构:全面解析与面试重点
jvm·面试·职场和发展