基于指针的强制类型转换非常高效,因为不会生成任何多余的指令的,也不会额外分配内存,只是让编译器换一个种方式来解释内存中的数据。
在 Go 语言中,处于安全方面的考虑,不建议频繁进行指针强制类型转换。
两种不同类型指针间的转换需要用 unsafe.Pointer
作为中间类型,unsafe.Pointer
可以和任意一种指针类型互相转换。
示例代码如下:
func convert(p *int) {
q := (* int32)(unsafe.Pointer(p))
* q = 0
}
网友评论