前言

在开发的时候,会遇到对于nil slice和empty slice的问题,往往在声明了slice之后,在使用的时候却出现了问题。

问题

以下是错误的用法,会报数组越界的错误,因为只是声明了slice,却没有给实例化的对象,这一点如果是cpp的vector,便可以直接使用,但是golang 不行。

var slice []int
slice[1] = 0

此时slice的值是nil,这种情况可以用于需要返回slice的函数,当函数出现异常的时候,保证函数依然会有nil的返回值。

empty slice 是指slice不为nil,但是slice没有值,slice的底层的空间是空的,此时的定义如下:

slice := make([]int,0)//或者
slice := []int{}

当我们查询或者处理一个空的列表的时候,这非常有用,它会告诉我们返回的是一个列表,但是列表内没有任何值。

总之,nil slice 和 empty slice是不同的东西,在编程的需要加以区分。

[golang]nil slice和empty slice的区别相关推荐

  1. golang nil slice 和 empty slic 的区别 空切片

    var slice []int 创建出来的 slice 其实是一个 nil slice.它的长度和容量都为0.和nil比较的结果为true.这里比较混淆的是empty slice,empty slic ...

  2. golang nil切片与空切片

    var slice []int 创建出来的 slice 其实是一个 nil slice.它的长度和容量都为0.和nil比较的结果为true.这里比较混淆的是empty slice,empty slic ...

  3. golang中如何比较struct,slice,map是否相等以及几种对比方法的区别

    一.前言 对比两个struct或者map,slice是否相等是大家经常会有的需求,想必大家也都接触过很多对比的方式,比如==,reflect.DeepEqual(),cmp.Equal()等. 这么多 ...

  4. 2023版golang面试题100道(slice)

    面试题合集目录 整型切片如何初始化? s1 := make([]int, 0) s2 := make([]int, 5, 10) s3 := []int{1, 2, 3} nil切片和空切片指向的地址 ...

  5. nil slice 和 空 slice

    nil slice 和 空 slice 的处理是不一致. 通常错误的用法,会报数组越界的错误,因为只是声明了slice,却没有给实例化的对象. var slice []int slice[1] = 0 ...

  6. Ruby的.nil? .empty? .blank? .present?区别

    .nil? , .empty? .blank? .present?区别: .nil? 和 .empty? 是ruby的方法. .blank? 是rails的方法. .nil? 判断对象是否存在(nil ...

  7. RuntimeWarning: Mean of empty slice.

    今天早上在编程的时候出现了下面这两句话,在网上找不到什么解决方案.于是自己记录一下 D:\anaconda3\envs\torch\lib\site-packages\numpy\core\fromn ...

  8. golang中的new和make的区别

    new 这是一个用来分配内存的内建函数,但是与C++不一样的是,它并不初始化内存,只是将其置零.也就是说,new(T)会为T类型的新项目,分配被置零的存储,并且返回它的地址,一个类型为*T的值.在Go ...

  9. php 空函数,PHP 中函数 isset(), empty(), is_null() 的区别

    PHP 中函数 isset(), empty(), is_null() 的区别, 使用 PHP 进行开发的时候,经常会用到 isset(), empty(), is_null() 这几个函数对数据进行 ...

最新文章

  1. VS2010安装项目的系统必备中添加.NET 2.0
  2. 推荐:梁宏达与体育评书
  3. [JAVAWEB实战篇]---Hibernate实现级联删除
  4. Parallel Programming-使用CancellationTokenSource调度并行运行的Task
  5. MySQL本人工具使用
  6. OAuth2.0授权码模式学习
  7. VS2008下配置WTL开发环境
  8. 耳挂式蓝牙耳机原理_耳挂式蓝牙耳机项目总结分析报告
  9. 部署Hadoop集群
  10. 《CoderXiaoban团队》第一次作业:团队亮相
  11. 女员工有问题,责任在于头目不管事
  12. silverlight 碰撞检测
  13. 《2018华为92家核心供应商及其供应产品》
  14. Ubuntu16.04安装PostgreSQL并使用pgadmin3管理数据库_图文详解
  15. cf黑机器多久解除_[CF]黑机器码过无限提示一分钟强制踢出游戏的方法
  16. python中ix用法_在python的pandas模块中,DataFrame对象,如何选择一行?索引、loc、iloc、ix的用法及区别...
  17. gggggggggggg
  18. 百度地图如何拾取经纬度
  19. CTF中WINHex修改图片大小——bugku杂项题-隐写
  20. Alpha 冲刺(7/10)

热门文章

  1. web前端学习之ruby标记和rt/rp标记
  2. 动态规划--图像压缩
  3. 阅读react-redux源码(三) - mapStateToPropsFactories、mapDispatchToPropsFactories和mergePropsFactories
  4. WPF 中的设备无关单位
  5. 转-测试用例-常用控件
  6. Mac再建管理员帐户
  7. Spring Boot系列教程一:Eclipse安装spring-tool-suite插件
  8. QTP自传之web常用对象
  9. 离线使用iPhone SDK文档的方法
  10. (转)Asp.net 中 Get和Post 的用法