时间:2021-05-22
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil。
直接看代码,不同声明方式:使用 make() 函数生成的切片一定发生了内存分配操作,但给定开始与结束位置(包括切片复位)的切片只是将新的切片结构指向已经分配好的内存区域,设定开始与结束位置,不会发生内存分配操作。这里的内存分配我理解的就是引用数组指针地址
我们看看切片的数据结构:
nil切片和空切片最大的区别在于指向的数组引用地址是不一样的。
所有的空切片指向的数组引用地址都是一样的
示例
运行结果:
a is nil
b is not nil
Process finished with exit code 0
因此:
通过var a []int创建的切片是一个nil切片
通过b:=make([]int,0)创建的是一个空切片,(底层数组为空,但底层数组指针非空)
到此这篇关于Go中的nil切片和空切片区别详解的文章就介绍到这了,更多相关Go nil切片和空切片内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Go语言切片(Slice)Go语言切片是对数组的抽象。Go数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("
语义理解切片go语言中的切片是go语言的一个特色,从语义上来说,切片就是把一个整体的东西切分成小的部分,那么对于语言中的切片也是同理。举个例子看如下代码:pac
Go语言切片是对数组的抽象。Go数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切
详解Pythonlist与NumPy.ndarry切片之间的区别实例代码:#list切片返回的是不原数据,对新数据的修改不会影响原数据In[45]:list1=
IOS基础之nil,NULL,NSNULL区别详解①nil:一般赋值给空对象。②NULL:NULL是一个通用指针(泛型指针)。一般赋值给nil之外的其他空值。如