理解 Go 的 unintptr、unsafe.Pointer、*type
概念
*type
: 用于传递对象地址, 无法进行指针运算unsafe.Pointer
: 通用指针, 用于表示任意类型的指针, 无法进行指针运算, 无法读取存储的值,可作为对象引用- 任意类型的指针可以转换为
unsafe.Pointer
unsafe.Pointer
可以转换为任意类型的指针- 可以和
unintptr
互相转换 - 可比较, 支持与 nil 常量判断比较是否为空指针
- 任意类型的指针可以转换为
unintptr
: 可指针运算,由于其无法持有对象,GC不把unintptr
当作指针,unintptr
常被回收- 实际上
unintptr
就是一个整型值, 即便存储某个对象的内存地址, 也不算是对对象的引用
- 实际上
标签:Pointer,unintptr,unsafe,Go,type,指针 From: https://www.cnblogs.com/keepyang/p/17487546.html因为只有
unintptr
可以参与指针的运算, 所以常常与unsafe.Pointer
配合, 将普通类型指针转换为
unintptr
来完成指针运算。