zoukankan      html  css  js  c++  java
  • Go 内置常量 类型和函数

    package builtin

    builtin 包为Go的预声明标识符提供了文档

    内置常量

    false true iota nil

    内置类型

    值类型

    19个基本类型

    bool -- 布尔类型
    string -- 8位byte序列构成的字符串,约定但不必须是utf-8编码的文本。字符串可以为空但不能是nil,其值不可变。
    int -- 至少32位的有符号整形,但和int32/rune并非同一类型。
    uint -- 至少32位的无符号整形,但和uint32不是同一类型。
    int8 -- 8位有符号整形,范围[-128, 127]。
    uint8 -- 8位无符号整型,范围[0, 255]。
    int16 -- 16位有符号整形,范围[-32768, 32767]。
    uint16 -- 16位无符号整型,范围[0, 65535]。
    int32 -- 32位有符号整形,范围[-2147483648, 2147483647]。
    uint32 -- 32位无符号整型,范围[0, 4294967295]。
    int64 -- 64位有符号整形,范围[-9223372036854775808, 9223372036854775807]。
    uint64 -- 64位无符号整型,范围[0, 18446744073709551615]。
    uintptr -- 可以保存任意指针的位模式的整数类型。
    byte -- 8位无符号整型,是uint8的别名,二者视为同一类型。
    rune -- 32位有符号整形,int32的别名,二者视为同一类型。
    float32 -- 所有IEEE-754 32位浮点数的集合,12位有效数字。
    float64 -- 所有IEEE-754 64位浮点数的集合,16位有效数字。
    complex64 -- 具有float32 类型实部和虚部的复数类型。
    complex128 -- 具有float64 类型实部和虚部的复数类型。

    array -- 固定长度的数组

    引用类型(指针类型)

    slice -- 序列数组(切片)
    map -- 映射
    chan -- 管道
    /* !< slice */
    //1
    a := [5]int{76, 77, 78, 79, 80}
    var b []int = a[1:4]
    //2
    c := []int{6, 7, 8}
    //3
    //func make([]T, len, cap)
    i := make([]int, 5, 5)
    //slice 内部结构
    type slice struct {
        Length			int
        Capacity		int
        ZerothElement *byte
    }
    //切片包含长度、容量和指向数组第零个元素的指针
    
    /* !< map */
    //make(map[type of key]type of value)
    personSalry := make(map[string]int)
    
    
    /* !< chan */
    //chan T 表示T类型的信道,用make定义信道
    //1
    var a chan int
    a = make(chan int)
    //2
    a := make(chan int)
    //单向信道
    a := make(chan<- int)
    

    内置函数

    15个内置函数

    Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。

    它们有时可以针对不同的类型进行操作 eg: len, cap, append

    或必须用于系统级的操作 eg: panic

    因此它们需要直接获得编译器的支持

    type Type int
    
    type Type1 int	//用于代表和Type不同的另一类型。
    
    type IntgerType int
    
    type FloatType float32
    
    type ComplexType complex64
    
    • close

      • 主要用来关闭channel

      • func close(c chan<- Type)
        
      • 内建函数close关闭信道,该通道必须为双向的或只发送的。它应当只由发送者执行,而不应由接收者执行,其效果是在最后发送的值被接收后停止该通道。在最后的值从已关闭的信道中被接收后,任何对其的接收操作都会无阻塞的成功。对于已关闭的信道,语句:

      • x, ok := <-c	//还会将ok置为false
        
    • delete

      • 从map中删除key对应的value

      • func delete(m map[Type]Type1, key Type)
        
      • 内建函数delete按照指定的键将元素从映射中删除。若m为nil或无此元素,delete不进行操作

    • len

      • 用来求长度,eg: string array slice map channel 返回长度

      • func len(v Type) int
        
      • 内建函数len返回 v 的长度,这取决于具体类型:
        数组:v中元素的数量
        数组指针:*v中元素的数量(v为nil时panic)
        切片、映射:v中元素的数量;若v为nil,len(v)即为零
        字符串:v中字节的数量
        通道:通道缓存中队列(未读取)元素的数量;若v为 nil,len(v)即为零
        
    • append

      • 用来追加元素到数组, slice中 返回修改后的数组, slice

      • func append(slice []Type, elems ...Type) []Type
        
      • 内建函数append将元素追加到切片的末尾。若它有足够的容量,其目标就会重新切片以容纳新的元素。否则,就会分配一个新的基本数组。append返回更新后的切片,因此必须存储追加后的结果。

      • slice = append(slice, elem1, elem2)
        slice = append(slice, anotherSlice...)
        
      • 作为特例,可以向一个字节切片append字符串,如下:

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

      • 停止常规的goroutine (panic和recover:用来做错误处理)

      • func panic(v interface{})
        
      • 内建函数panic停止当前Go程的正常执行。当函数F调用panic时,F的正常执行就会立刻停止。F中defer的所有函数先入后出执行后,F返回给其调用者G。G如同F一样行动,层层返回,直到该Go程中所有函数都按相反的顺序停止执行。之后,程序被终止,而错误情况会被报告,包括引发该恐慌的实参值,此终止序列称为恐慌过程。

    • recover

      • 允许程序定义goroutine的panic动作

      • func recover() interface{}
        
      • 内建函数recover允许程序管理恐慌过程中的Go程。在defer的函数中,执行recover调用会取回传至panic调用的错误值,恢复正常执行,停止恐慌过程。若recover在defer的函数之外被调用,它将不会停止恐慌过程序列。在此情况下,或当该Go程不在恐慌过程中时,或提供给panic的实参为nil时,recover就会返回nil。

    • complex

      • 使用实部r和虚部i生成一个复数

      • func complex(r, i FloatType) ComplexType
        
    • imag

      • 返回complex的虚部 (complex, real, imag:用于创建和操作复数)

      • func imag(c ComplexType) FloatType
        
    • real

      • 返回complex的实部

      • func real(c ComplexType) FloatType
        
    • make

      • 用来分配内存,主要用来分配引用类型 返回Type本身(只能应用于slice, map, channel)

      • func make(Type, size IntgerType) Type
        
      • 内建函数make分配并初始化一个类型为切片、映射、或通道的对象。其第一个实参为类型,而非值。make的返回类型与其参数相同,而非指向它的指针。其具体结果取决于具体的类型:

      • 切片:size指定了其长度。该切片的容量等于其长度。切片支持第二个整数实参可用来指定不同的容量;
             它必须不小于其长度,因此 make([]int, 0, 10) 会分配一个长度为0,容量为10的切片。
        映射:初始分配的创建取决于size,但产生的映射长度为0。size可以省略,这种情况下就会分配一个
             小的起始大小。
        通道:通道的缓存根据指定的缓存容量初始化。若 size为零或被省略,该信道即为无缓存的。
        
    • new

      • 用来分配内存,主要用来分配值类型,eg: int, struct 返回指向Type的指针

      • func new(Type) *Type
        
      • 内建函数new分配内存。其第一个实参为类型,而非值。其返回值为指向该类型的新分配的零值的指针。

    • cap

      • 用于返回某个类型的最大容量(只能用于切片和 map)

      • func cap(v Type) int
        
      • 内建函数cap返回 v 的容量,这取决于具体类型:
        数组:v中元素的数量,与 len(v) 相同
        数组指针:*v中元素的数量,与len(v) 相同
        切片:切片的容量(底层数组的长度);若 v为nil,cap(v) 即为零
        信道:按照元素的单元,相应信道缓存的容量;若v为nil,cap(v)即为零
        
    • copy

      • 用于复制和连接slice,返回复制的数目

      • func copy(dst, src []Type) int
        
      • 内建函数copy将元素从来源切片复制到目标切片中,也能将字节从字符串复制到字节切片中。copy返回被复制的元素数量,它会是 len(src) 和 len(dst) 中较小的那个。来源和目标的底层内存可以重叠。

    • print, println

      • 底层打印函数,在部署环境中建议使用 fmt 包

      • func print(args ...Type)
        
      • 内建函数print以特有的方法格式化参数并将结果写入标准错误,用于自举和调试。

      • func println(args ...Type)
        
      • println类似print,但会在参数输出之间添加空格,输出结束后换行。

    内置接口

    1个内置接口

    • error
    type error interface {  //只要实现了Error()函数,返回值为String的都实现了err接口 
        Error()	String		//内建error接口类型是约定用于表示错误信息,nil值表示无错误。
    }
    

    nil是预定义的标识符,代表指针、通道、函数、接口、映射或切片的零值。

    iota是一个预定义的标识符,代表顺序按行增加的无符号整数,

    reference

  • 相关阅读:
    kettle结合MySQL生成保留最近6个月月度报告_20161009
    reduce用法
    【npm下载依赖包失败】gyp ERR! stack Error: EACCES: permission denied, mkdir问题解决方案
    【前端算法3】插入排序
    【前端算法2】快速排序
    【前端算法1】二分查找
    diy 滚动条 样式 ---- 核心代码
    [数据结构] 栈
    [数据结构] 列表
    day02 Python 运算符
  • 原文地址:https://www.cnblogs.com/xzpin/p/11659839.html
Copyright © 2011-2022 走看看