golang bool类型是怎么实现的
文章目录
前言
wc的时候突然蹦出一个想法,golang bool
是什么类型实现的。会和c
一样吗?
既然有疑问,就做个实验看下。
如果bool的值为true,内存里面的值是?
这里可以使用内存强转的思路看下,是驴子是马拉出来溜溜。这里提醒下,使用内存强转一定要内存对齐,bool
占一个字节。
如果不记得可以使用unsafe.Sizeof
看下bool
的内存占用。下面使用uint8
对内存地址强转
|
|
从输出上看,bool是1 字节int无疑。这里不纠结uint8
还是int8
不涉及运算。这俩只是对那块内存块的解释不同。
如果给bool
赋值为负数
,是true
还是false
|
|
通过上面的例子可以说明,bool
是int8 or uint8
无疑。0
为false
,非零
为true
文章作者 guonaihong
上次更新 2021-01-18