You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不依赖len()函数安全判断已初始化非nil切片是否为空

不借助len()判断非nil切片是否为空的安全方法

针对你遇到的场景,这里提供两种安全的实现方式:

方法1:与同类型空切片直接比较

如果切片的元素类型是可比较类型(如int、string、不含切片/map/函数的struct等),可以直接将目标切片和同类型的空切片做相等判断:

// 示例:int类型切片
s := make([]int, 0) // 非nil的空切片
if s == []int{} {
    // 切片为空
}

注意:如果切片元素包含不可比较类型(如切片、map),这种方法会编译报错,此时建议用第二种方法。

方法2:利用range循环特性

空切片的range循环不会执行任何迭代,我们可以借助这一点判断切片是否为空,这种方法适用于所有类型的切片,且完全安全:

isEmpty := true
// 只要切片有元素,循环会执行一次
for range s {
    isEmpty = false
    break // 无需遍历全部元素,找到第一个就退出
}
if isEmpty {
    // 切片为空
}

另外需要注意:你之前尝试的索引第一个元素的方式不可行,因为空切片的长度为0,索引访问会触发越界panic,绝对不能在不确定切片长度的情况下直接索引访问元素。

内容的提问来源于stack exchange,提问作者PotatoDeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 14:20:58