在日常的Go语言开发中,我们大多数时候都在与类型安全的代码打交道。但当你需要与底层系统交互、进行高性能优化或处理特殊场景时,就不得不接触Go语言中的"禁区"——unsafe包。unsafe包中有两个核心类型:unsafe.Pointer和uintptr。
unsafe.Pointer是Go语言中的一种特殊指针类型,它可以指向任意类型的变量。你可以把它理解为Go语言中的"void "指针,就像C语言中的void一样。
var x int64 = 42
p := unsafe.Pointer(&x) // 将int64指针转换为unsafe.Pointer