Go
语言自带的 unsafe
包的高级用法, 顾名思义,unsafe
是不安全的。Go
将其定义为这个包名,也是为了让我们尽可能地不使用它。不过虽然不安全,它也有优势,那就是可以绕过 Go
的内存安全机制,直接对内存进行读写。所以有时候出于性能需要,还是会冒险使用它来对内存进行操作。
1. 指针类型转换
Go
是一门强类型的静态语言。强类型意味着一旦定义了,类型就不能改变;静态意味着类型检查在运行前就做了。同时出于安全考虑,Go
语言是不允许两个指针类型进行转换的。
我们一般使用 *T
作为一个指针类型,表示一个指向类型 T
变量的指针。为了安全的考虑,两个不同的指针类型不能相互转换,比如 *int
不能转为 *float64
。
我们来看下面的代码:
func main(