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

相关推荐
拉不动的猪10 小时前
一文搞懂:localhost和局域网 IP 的核心区别与使用场景
前端·javascript·面试
怕什么真理无穷12 小时前
C++_面试15_零拷贝
c++·面试·职场和发展
沐怡旸13 小时前
【穿越Effective C++】条款21:必须返回对象时,别妄想返回其reference——对象返回的语义与效率平衡
c++·面试
一叶飘零_sweeeet13 小时前
2025 年 Redis 面试天花板
redis·缓存·面试
米兰小铁匠1714 小时前
js深入之从原型到原型链
javascript·面试
脉动数据行情16 小时前
Go语言对接股票、黄金、外汇API实时数据教程
开发语言·后端·golang
Java水解16 小时前
20个高级Java开发面试题及答案!
spring boot·后端·面试
一直在努力的小宁18 小时前
《代码随想录-精华内容提取》07 二叉树
数据结构·算法·链表·面试
世洋Blog18 小时前
Unity面经-List底层原理、如何基于数组、如何扩容、List存储泛型、List有关在内存中的结构
unity·面试·c#·list