前言
在使用C/C++过程中,很多时候出现的错误都是由于指针操作不合理,导致各种奇奇怪怪的问题。但是,也是由于指针的存在才让C/C++代码的运行效率比其他语言的略高。golang也有指针类型,但是不允许直接对指针类型进行运算。就是像保留指针的有点,规避掉由于指针操作不当而引发的各种奇怪问题。但是有些时候确实需要使用到指针运算的时候,就需要使用到unsafe包了。为什么要用unsafe包呢,说白了,就是让我们在操作指针的时候麻烦些,这样有一定几率会减少由于指针操作不当所引发的问题。
unsafe包接口介绍
1、func Alignof(x ArbitraryType) uintptr
获取变量以多数字节对齐
2、func Offsetof(x ArbitraryType) uintptr
Offsetof返回x所代表的结构体中字段的偏移量,它必须是structValue.field的形式。换言之,该方法返回结构体起始处到该字段之间的字节数。
3、func Sizeof(x ArbitraryType) uintptr
Sizeof获取变量的大小,类似于C/C++中使用sizeof(变量)返回的结果。
unsafe包中的类型
unsafe包中最重要的类型就是Pointer类型,定义如下:
type Po