【Golang】判断切片是否为空(切片不能直接比较)

news/2024/7/20 21:53:18 标签: golang, ios, 开发语言, go, 切片

文章目录

  • 结论
  • 解释

结论

要检查切片是否为空,需始终使用

len(s) == 0

来判断,而不应该使用

s == nil

来判断。

解释

切片之间是不能比较的,我们不能使用==操作符来判断两个切片是否含有全部相等元素。 切片唯一合法的比较操作是和nil比较。 一个nil值的切片并没有底层数组,一个nil值的切片的长度和容量都是0。但是我们不能说一个长度和容量都是0的切片一定是nil,例如下面的示例:

go">var s1 []int            //len(s1)=0;cap(s1)=0;s1==nil
s2 := []int{}           //len(s2)=0;cap(s2)=0;s2!=nil
s3 := make([]int, 0)    //len(s3)=0;cap(s3)=0;s3!=nil

所以要判断一个切片是否是空的,要是用len(s) == 0来判断,不应该使用s == nil来判断。

其根本原因在于后面两种初始化方式已经给切片分配了空间,所以就算切片为空,其与nil也并不相等,而len(s) == 0成立,则切片一定为空。


http://www.niftyadmin.cn/n/338464.html

相关文章

从零开始 Spring Boot 31:Spring 表达式语言

从零开始 Spring Boot 31:Spring 表达式语言 图源:简书 (jianshu.com) Spring表达式语言(Spring Expression Language,简称 “SpEL”)是一种强大的表达式语言,支持在运行时查询和操作对象图。该语言的语法…

ChatGPT Plugin已正式上线 - 如何优先使用?

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

了解“感应雷”危害,针对性防护

直击雷的危害,比较容易理解,其防范措施也相对简单明了——避雷针、引下线、接地装置(当然,这里面也有很多的细节和要求,也是需要专业人员来从事的,在此就不展开了),所以对直击雷的防…

matlab代码复现:室内定位、无线传感器网路定位、估计优化滤波等探讨及技术支持

室内外定位导航、无线传感器网路定位、估计优化滤波等探讨及技术支持 博主主要擅长以下几个方面,探讨、技术支持、代码复现等问题欢迎联系,也可以站内私信 weixin: ZB823618313(备注来意) 1. 估计\滤波\融合 1 各种参数估计算法…

2023 护网面试题(适合蓝中),持续更新中...

1. 题目在持续收集,欢迎各位在评论区补充。 2. 题目还没来得及分类整理,后续答案整理的差不多了会做 3. 题目收集比答案快太多了,有些题目还没来得及收集答案,欢迎各位大佬在评论区提供答案 4. 如果收集到的答案有不完整的或者错误…

全球分布式云大会:AntDB超融合流式实时数仓,打造分布式数据库新纪元

日前,全球分布式云大会北京站在北京金茂万丽酒店举办,亚信科技AntDB数据库受邀参会,会上技术负责人北陌发表以“AntDB超融合流式实时数仓,打造分布式数据库新纪元”为主题的演讲,通过分享AntDB在数据库前沿技术的研发实…

chatgpt赋能Python-python2转3

Python2转3的最终结论 Python是一种流行的编程语言,但随着Python 2的维护结束,许多开发者正在考虑将他们的代码从Python 2升级到Python 3。这篇文章将介绍如何在搜索引擎优化(SEO)方面实现Python 2转3,并讨论为什么这…

十四届蓝桥杯青少组中高级组省赛Python_2023.05.14

蓝桥杯大赛青少组 第十四届蓝桥杯Python中级组省赛选择题: T1. 编程题 LQSS14PB01 时间限制: 3000MS 内存限制: 589824KB 题目描述:(注.input()输入函数的括号中不允许添加任何信息) 编程实现: 给定一个正整数N,计算出N+N的值。 例如:N = 4,4+4的值为8(8=4+4)。 输…