go空结构体的广泛应用得益于go空结构体不占用任何内存
一个类型的宽度是该类型的实例所占有的存储空间的字节数
一个类型的宽度 = unsafe.Sizeof( type )
其他任意数据类型的宽度都不等于0,任何空结构体之间的嵌套也都是0
用途1:可以作为方法的接收器来实现零成本的方法分组,便于后期扩展
用途2:可以实现类似集合的功能,定一个空结构体的map,把元素作为key, struct{} 作为值放进去,因为map的key是唯一的,所以可以实现集合元素的唯一性,并且这个 map 的大小也是最小的,因为值为空结构体,不占内存,只占位
用途3:可以定义一个struct{} 的channel ,利用协程阻塞来使协程串行化
网友评论