[golang]nil slice和empty slice的区别
前言
在开发的时候,会遇到对于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的区别相关推荐
- golang nil slice 和 empty slic 的区别 空切片
var slice []int 创建出来的 slice 其实是一个 nil slice.它的长度和容量都为0.和nil比较的结果为true.这里比较混淆的是empty slice,empty slic ...
- golang nil切片与空切片
var slice []int 创建出来的 slice 其实是一个 nil slice.它的长度和容量都为0.和nil比较的结果为true.这里比较混淆的是empty slice,empty slic ...
- golang中如何比较struct,slice,map是否相等以及几种对比方法的区别
一.前言 对比两个struct或者map,slice是否相等是大家经常会有的需求,想必大家也都接触过很多对比的方式,比如==,reflect.DeepEqual(),cmp.Equal()等. 这么多 ...
- 2023版golang面试题100道(slice)
面试题合集目录 整型切片如何初始化? s1 := make([]int, 0) s2 := make([]int, 5, 10) s3 := []int{1, 2, 3} nil切片和空切片指向的地址 ...
- nil slice 和 空 slice
nil slice 和 空 slice 的处理是不一致. 通常错误的用法,会报数组越界的错误,因为只是声明了slice,却没有给实例化的对象. var slice []int slice[1] = 0 ...
- Ruby的.nil? .empty? .blank? .present?区别
.nil? , .empty? .blank? .present?区别: .nil? 和 .empty? 是ruby的方法. .blank? 是rails的方法. .nil? 判断对象是否存在(nil ...
- RuntimeWarning: Mean of empty slice.
今天早上在编程的时候出现了下面这两句话,在网上找不到什么解决方案.于是自己记录一下 D:\anaconda3\envs\torch\lib\site-packages\numpy\core\fromn ...
- golang中的new和make的区别
new 这是一个用来分配内存的内建函数,但是与C++不一样的是,它并不初始化内存,只是将其置零.也就是说,new(T)会为T类型的新项目,分配被置零的存储,并且返回它的地址,一个类型为*T的值.在Go ...
- php 空函数,PHP 中函数 isset(), empty(), is_null() 的区别
PHP 中函数 isset(), empty(), is_null() 的区别, 使用 PHP 进行开发的时候,经常会用到 isset(), empty(), is_null() 这几个函数对数据进行 ...
最新文章
- VS2010安装项目的系统必备中添加.NET 2.0
- 推荐:梁宏达与体育评书
- [JAVAWEB实战篇]---Hibernate实现级联删除
- Parallel Programming-使用CancellationTokenSource调度并行运行的Task
- MySQL本人工具使用
- OAuth2.0授权码模式学习
- VS2008下配置WTL开发环境
- 耳挂式蓝牙耳机原理_耳挂式蓝牙耳机项目总结分析报告
- 部署Hadoop集群
- 《CoderXiaoban团队》第一次作业:团队亮相
- 女员工有问题,责任在于头目不管事
- silverlight 碰撞检测
- 《2018华为92家核心供应商及其供应产品》
- Ubuntu16.04安装PostgreSQL并使用pgadmin3管理数据库_图文详解
- cf黑机器多久解除_[CF]黑机器码过无限提示一分钟强制踢出游戏的方法
- python中ix用法_在python的pandas模块中,DataFrame对象,如何选择一行?索引、loc、iloc、ix的用法及区别...
- gggggggggggg
- 百度地图如何拾取经纬度
- CTF中WINHex修改图片大小——bugku杂项题-隐写
- Alpha 冲刺(7/10)
热门文章
- web前端学习之ruby标记和rt/rp标记
- 动态规划--图像压缩
- 阅读react-redux源码(三) - mapStateToPropsFactories、mapDispatchToPropsFactories和mergePropsFactories
- WPF 中的设备无关单位
- 转-测试用例-常用控件
- Mac再建管理员帐户
- Spring Boot系列教程一:Eclipse安装spring-tool-suite插件
- QTP自传之web常用对象
- 离线使用iPhone SDK文档的方法
- (转)Asp.net 中 Get和Post 的用法