gpt4 book ai didi

Go中的nil切片和空切片区别详解

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Go中的nil切片和空切片区别详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil.

直接看代码,不同声明方式:使用 make() 函数生成的切片一定发生了内存分配操作,但给定开始与结束位置(包括切片复位)的切片只是将新的切片结构指向已经分配好的内存区域,设定开始与结束位置,不会发生内存分配操作。这里的内存分配我理解的就是引用数组指针地址 。

  • nil切片和空切片指向的地址不一样。nil空切片引用数组指针地址为0(无指向任何实际地址)
  • 空切片的引用数组指针地址是有的,且固定为一个值

我们看看切片的数据结构:

nil切片和空切片最大的区别在于指向的数组引用地址是不一样的.

Go中的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切片和空切片内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://juejin.cn/post/6943519264812826660 。

最后此篇关于Go中的nil切片和空切片区别详解的文章就讲到这里了,如果你想了解更多关于Go中的nil切片和空切片区别详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com