GPM
并发包
unsafe.Pointer
golang作为强类型静态语言,不允许指针类型转换。所以有了unsafe.Pointer,相当C语言中的void *
四个规则:
- 任何指针都可以转换为unsafe.Pointer
 - unsafe.Pointer可以转换为任何指针
 - uintptr可以转换为unsafe.Pointer
 - unsafe.Pointer可以转换为uintptr
 
1  | func main() {  | 
要注意的是,uintptr不能作为临时变量,GC可能会产生潜在问题
atomic.Value
sync.Map
sync.Pool
保存和复用临时对象,减少内存分配,降低GC压力。