指针转换可以使用 Go 语言的内置函数 unsafe.Pointer() 来实现。该函数可以将任意类型的指针转换为 unsafe.Pointer 类型,然后再使用 unsafe.Pointer() 将其转换回原来的类型。
下面是一个示例:
package main
import (
"fmt"
"unsafe"
)
func main() {
var a int = 10
var b *int = &a
fmt.Println("a =", a)
fmt.Println("b =", b)
// 指针转换
var c unsafe.Pointer = unsafe.Pointer(b)
fmt.Println("c =", c)
// 指针转换回原来的类型
var d *int = (*int)(c)
fmt.Println("d =", d)
fmt.Println("*d =", *d)
}
输出结果:
a = 10
b = 0xc00001a0a0
c = 0xc00001a0a0
d = 0xc00001a0a0
*d = 10