概述

builtin 包为 Go 预定义的标识符提供说明。这个文档的内容其实并不在 builtin 包中,但是把它们写在这里方便 godoc 生成这些特殊标识符的文档。

索引

Constants

true 和 false 是两个无类型布尔值。

  1. const iota = 0 // 无类型整数

iota 是一个预定义的标识符,它负责为当前的一组常量声明(一般在括号内)生成无类型的整数序号,序号从 0 开始。

Variables

  1. var nil Type // Type 必须是一个指针,channel,func,interface,map 或 slice 类型。

nil 是预定义的标识符,它可以表示指针,channel,func,interface,map 或 slice 类型的零值。

func

  1. func append(slice [], elems ...Type) []

内置的 append 函数在切片的结尾追加元素。如果它有足够的空间,那么会直接给新元素分配空间。如果没有足够的空间,会为切片重新分配一个新的底层数组。append 函数返回操作后的切片。因此如果需要储存操作后的结果,一般会把值再赋给原来的切片:

  1. slice = append(slice, elem1, elem2)
  2. slice = append(slice, anotherSlice...)

作为特例,像这样为字节切片追加一个字符串是合法的:

  1. slice = append([]byte("hello "), "world"...)

func cap

  1. func cap(v Type) int

内置的 cap 函数根据 v 的类型返回它的容量:

  1. Array: v 中元素的数量
  2. Pointer to array: *v 中的元素数量
  3. Slice: 不用重新分配底层数组的最大长度。
  4. 如果 v nil 返回 0
  5. 如果 v nil 返回 0

func

  1. func close(c chan<- )

内置函数 close 用来关闭一个 channel(双向或者只写),只应该由发送端关闭 channel,接收端永远不需要关闭,接收到最后一个发送的值后会获取到关闭状态。在接收端从关闭的 channel 中接收到最后一个值以后,任何对 c 的接收操作都不会阻塞而是直接返回,返回值为 channel 元素的零值。下面格式的 ok 会在 channel 被关闭的时候被置为 false。

  1. x, ok := <-c

func complex

  1. func complex(r, i FloatType)

内置函数 complex 通过两个浮点数来构造一个复数。实数和虚数部分必须为相同类型,可以是 float32 或者 float64(或者能转换成它们的类型),并且返回值是对应的虚数类型(float32 对应 complex64,float64 对应 complex128)。

func copy

  1. func copy(dst, src []Type) int

内置函数 copy 从源切片把元素拷贝到指定切片(作为特例,它也可以从字符串把元素拷贝到切片)。源切片和指定切片可以重叠。copy 函数返回拷贝元素的数量,它是 len(src)len(dst) 中的较小值。

func

  1. func delete(m map[]Type1, key )

内置函数 delete 删除 map 中指定索引的元素。如果 m 为 nil 或者没有这个元素,delete 什么也不做。

func imag

  1. func imag(c ComplexType)

内置函数 imag 返回复数 c 的虚数部分。返回值为 c 对应的浮点数类型。

func len

  1. func len(v Type) int

内置函数 len 根据 v 的类型返回 v 的长度:

  1. Array: v 中元素的数量
  2. Pointer to array: *v 中元素的数量
  3. Slice, or map: v 中元素的数量,如果 v nil 返回 0
  4. Channel: channel 缓存中排队元素的数量
  5. 如果 v nil 返回 0

func

内置函数 make 分配并初始化 slice,map 或者 chan。和 new 类似,第一个参数为参数的类型,而不是一个值。和 new 不同的是 make 返回的类型和参数类型相同,而不是一个指向该类型的指针。具体的返回值依赖于具体类型:

  1. 它不能小于切片的长度。例如:`make([]int,0,10)` 分配一个大小为 10 的底层数组并返回一个
  2. 基于该底层数组的长度为 0 容积为 10 的切片。
  3. Map: 程序会分配足够的空间给一个空的 map 来保存指定数量的元素。这时我们可以不用为其设置具体大小。
  4. Channel: 可以通过指定容积来初始化 channel 缓存的大小。如果为零,或者没有设置缓存大小,那么

func

  1. func new() *Type

内置函数 new 会分配内存。第一个参数是一个类型,而不是值,并且返回值是一个指向该类型零值的指针。

  1. func panic(v interface{})

内置函数 panic 停止当前执行的 goroutine。如果函数 F 调用了 panic,F 的执行会立马终止。但是通过 defer 注册的函数还会正常执行,并且 F 会返回到它的调用者。对于调用者 G,对 F 的调用行为就像调用了 panic 一样,会中断 G 的执行并执行 defer 注册的函数。就这样把所有调用链上的函数按照相反的顺序全部停止。这样程序就会以附带错误条件(panic 的参数值)的方式中断。这个中断的序列叫做恐慌并且可以通过内置函数 recover 进行控制。

func

  1. func print(args ...)

func println

  1. func println(args ...Type)

内置函数 println 以指定方式格式化参数并将结果写入标准错误输出。参数之间和行间一直都会有空白。

Println 对于初始化和调试十分有用。不承诺它在语言中一直存在。

func

  1. func real(c ) FloatType

real 内置函数返回复数 c 的实数部分。返回值为 c 对应的浮点数类型。

func

  1. func recover() interface{}

内置函数 recover 允许程序管理一个恐慌 goroutine 的行为。在 defer 注册的函数中使用 recover(不是所有的函数都调用它)会中断恐慌序列并重新执行程序然后取回 panic 传递的错误信息。如果 recover 在 defer 注册的函数外调用,它不会中断恐慌序列。当 goroutine 没有发生恐慌或者 panic 的参数为 nil 的时候,recover 会返回 nil。因此 recover 的返回值可以用来判断是否发生了恐慌。

type

  1. type ComplexType complex64

ComplexType 类型在这里只是为了说明。它可以代表的两种复数类型(complex64 和 complex128)。

type

  1. type FloatType float32

FloatType 类型在这里只是为了说明。它可以代表的两种浮点数类型(float32 和 float64)。

type

  1. type IntegerType int

IntegerType 类型在这里只是为了说明。它可以代表任何整型:int,uint,int8 等等。

type

  1. type Type int

Type 类型在这里只是为了说明。它代表任何的 Go 类型。但是对于任何给定的函数调用表示相同的类型。

type

  1. type Type1 int

Type1 类型在这里只是为了说明。它代表任何 Go 类型。但是对于任何给定的函数调用表示相同的类型。

type

  1. type bool bool

b

type

  1. type byte = uint8

byte 是 uint8 的别名,它和 uint8 是等价的。它是用来区分字节值和 8 位无符号整数值。

type

  1. type complex128 complex128

complex128 代表复数的 float64 的实数部分和 float64 的虚数部分。

type

complex64 代表复数的 float32 的实数部分和 float32 的虚数部分。

type

  1. type error interface {
  2. Error() string
  3. }

内置接口 error 用来简单表示错误的条件,nil 代表没有错误。

  1. type float32 float32

type

  1. type float64 float64

float64 表示所有 IEEE-754 的 64 位浮点数。

type

  1. type int int

int 是有符号的整型,它最少为 32 位。它和 int32 表示不同的类型。

type

  1. type int16 int16

int16 代表所有有符号的 16 位整数。区间是 -32768 到 32767。

type

  1. type int32 int32

int32 代表所有有符号的整数类型。区间是 -2147483648 到 2147483647。

type

  1. type int64 int64

int64 代表所有的有符号类型的 64 位整数。区间是 -9223372036854775808 到 9223372036854775807。

type

  1. type int8 int8

int8 代表所有有符号 8 位整数。区间是 -128 到 127。

type

  1. type rune = int32

rune 是 int32 的别名,它和 int32 是等价的。它主要用来区分字符值和整型值。

type

  1. type string string

string 表示字符串 8 位字节的集合。一般情况先都是 UTF-8 文本。字符串可能为空,但是不能为 nil。

string 的值不可改变的。

type

  1. type uint uint

uint 是无符号整型,它至少有 32 位。它和 uint32 表示不同类型。

type

  1. type uint16 uint16

uint16 代表所有无符号 16 位整数。区间是 0 到 65535。

type

  1. type uint32 uint32

uint32 表示所有无符号 32 位 整数。区间是 0 到 4294967295。

type

  1. type uint64 uint64

uint64 表示所有无符号 64 位整数。区间是 0 到 18446744073709551615。

type

    uint8 表示所有无符号的 8 位整数。区间是 0 到 255。

    type