package unsafe
import "unsafe"
unsafe包提供了一些跳过go语言类型安全限制的操作。
Index
返回首页
type ArbitraryType
type Pointer
func Sizeof(v ArbitraryType) uintptr
func Alignof(v ArbitraryType) uintptr
func Offsetof(v ArbitraryType) uintptr
type ArbitraryType
type ArbitraryType int
ArbitraryType在本文档里表示任意一种类型,但并非一个实际存在与unsafe包的类型。
type Pointer
type Pointer *ArbitraryType
Pointer类型用于表示任意类型的指针。有4个特殊的只能用于Pointer类型的操作:
1) 任意类型的指针可以转换为一个Pointer类型值
2) 一个Pointer类型值可以转换为任意类型的指针
3) 一个uintptr类型值可以转换为一个Pointer类型值
4) 一个Pointer类型值可以转换为一个uintptr类型值
因此,Pointer类型允许程序绕过类型系统读写任意内存。使用它时必须谨慎。
func Sizeof
func Sizeof(v ArbitraryType) uintptr
Sizeof返回类型v本身数据所占用的字节数。返回值是“顶层”的数据占有的字节数。例如,若v是一个切片,它会返回该切片描述符的大小,而非该切片底层引用的内存的大小。
func Alignof
func Alignof(v ArbitraryType) uintptr
Alignof返回类型v的对齐方式(即类型v在内存中占用的字节数);若是结构体类型的字段的形式,它会返回字段f在该结构体中的对齐方式。
func Offsetof
func Offsetof(v ArbitraryType) uintptr
Offsetof返回类型v所代表的结构体字段在结构体中的偏移量,它必须为结构体类型的字段的形式。换句话说,它返回该结构起始处与该字段起始处之间的字节数。