开始记录每天的生活
  KjeCQwudv3V5 2023年11月02日 54 0
Go

2023-05-31

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

len(s) == 0

来判断,而不应该使用

s == nil

来判断。

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

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成立,则切片一定为空

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  uGYzDadp0Cs7   2024年04月18日   79   0   0 Go
  hyrB1Ag4eVs8   2024年04月15日   71   0   0 Go
  dHUS172Lkv6A   2024年05月08日   175   0   0 Go
  YFCZjJLTjJgW   2024年05月04日   52   0   0 Go
  YFCZjJLTjJgW   2024年05月17日   59   0   0 Go
  uGYzDadp0Cs7   2024年04月16日   119   0   0 Go
  YFCZjJLTjJgW   2024年05月17日   59   0   0 Go
KjeCQwudv3V5
作者其他文章 更多