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