Unsafe
- 它所有的危险项
- unsafe的常见用途
- mmap数据文件
- 结构填充
- 但并不总是足够快以证明复杂性/安全成本
- 但是“off-heap”,所以被gc忽略(但是没有指针的slice)
- 快速反序列化
- string <-> slice 转换,[]byte <-> []uint32,…
- int到bool是不安全的hack (但 != 0是可以的)
- 填充:
- https://dave.cheney.net/2015/10/09/padding-is-hard
- http://www.catb.org/esr/structure-packing/# _go_and_rust
- https://golang.org/ref/spec# Size_and_alignment_guarantees
- https://github.com/dominikh/go-tools 结构布局,结构布局优化
- 通过Offsetof对结构布局进行编码以发现unsafe和asm破损