获得徽章 0
- #青训营 x 字节后端训练营#
打卡第二天咯 今天去了解一下go,之前一直是学Java,发现go与Java还是有更多的不同点。明天就要开始正式接触go了,就要学习这门新语言了。^0^~评论1 - 学习Golang中的零值、空值与空结构
零值
Golang零值是指声明变量时并未显示初始化,始终为你的变量自动设置应该默认的初始化值,就叫做零值。
此类变量或值的每个元素都设置为其类型的零值:布尔值为false,数字类型为0,字符串为“”,指针、函数、接口、切片、通道、和映射为nil。
空值nil
Golang的nil与在C中的NULL和C++中的nullptr类似,但是nil时Golang中预先声明的标识符,其主要用来表示引用类型的零值(指针、接口、函数、映射、切片和通道),表示它们未初始化的值
nil是Golang中唯一没有默认类型的非类型化的值,它不是一个未定义的状态。
空结构
定义:空结构是没有任何字段的结构类型。
我们知道C语言·和C++中一个结构体的大小是由其字段宽度(size)和内存对齐共同决定的,这样有助于寻址速度。
很显然,空结果的占用占用空间大小为零字节。
由于空结构占用零字节,因此不需要填充对齐,所以由嵌套空结构的空结构也不会占用存储空间。
由于空结构不占用内存空间,所以我们声明以空结构作为元素的数组或切片,也是不占用空间的。
对于空结构(或者空数组),其占用的存储大小的变量在内存中可能具有相同的地址。 #青训营 x 字节后端训练营#展开评论4
![[飞吻]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_81.8e1cf74.png)
![[微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_1.7d9f699.png)