Go 语言

Go 语言教程 Go 语言环境安装 Go 语言结构 Go 语言基础语法 Go 语言数据类型 Go 语言变量 Go 语言常量 Go 语言运算符 Go 语言条件语句 Go 语言 if 语句 Go 语言 if...else 语句 Go 语言 if 语句嵌套 Go 语言 switch 语句 Go 语言 select 语句 Go 语言循环语句 Go 语言 for 循环 Go 语言循环嵌套 Go 语言 break 语句 Go 语言 continue 语句 Go 语言 goto 语句 Go 语言函数 Go 语言函数值传递值 Go 语言函数引用传递值 Go 语言函数作为值 Go 语言函数闭包 Go 语言函数方法 Go 语言变量作用域 Go 语言数组 Go 语言多维数组 Go 语言向函数传递数组 Go 语言指针 Go 语言指针数组 Go 语言指向指针的指针 Go 语言指针作为函数参数 Go 语言结构体 Go 语言切片(Slice) Go 语言范围(Range) Go 语言Map(集合) Go 语言递归函数 Go 语言类型转换 Go 语言接口 Go 错误处理 Go 语言开发工具Go 语言标准库

Go 语言标准库


package unsafe

import "unsafe"

unsafe包提供了一些跳过go语言类型安全限制的操作。

Go语言标准库 >>


  • 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所代表的结构体字段在结构体中的偏移量,它必须为结构体类型的字段的形式。换句话说,它返回该结构起始处与该字段起始处之间的字节数。