美文网首页
内置函数

内置函数

作者: 特仑苏_Cloud | 来源:发表于2018-03-23 09:58 被阅读0次
  1. close:主要用来关闭channel
  2. len:用来求长度,比如string、array、slice、map、channel
  3. new:用来分配内存,主要用来分配值类型,比如int、struct。返回指针
  4. make:用来分配内存,主要用来分配引用类型,比如chan、map、slice
  5. append:用来追加元素到数组、切片中
  6. panic和recover:用来做错误处理
package main
import(
    "fmt"
    "time"
        "errors"
)

func initConfig() (err error){
    return  errors.New("init config failed")
}
func test(){
    defer func(){                                //匿名函数,用来捕获异常
        if err:= recover(); err !=nil{
            fmt.Println(err)
        }
    }()
    b := 0
    a := 100 / b
    fmt.Println(a)
    return
}
func test_config(){
        err := initConfig()
        if err != nil{
        panic(err)
    }
    return
}

func main(){
    for {
        test_config()
        test()
        time.Sleep(time.Second*2)
    }
    var  a []int
    a = append(a,1,2,3)
    a = append(a,a...)          //如果切片中append切片时,使用... ||||  ...是切片的展开
    fmt.Println(a)
}

new 和 make的区别
new 函数
官方文档描述为:

The new build-in function allocates memory(仅仅分配空间). The first argument is a type, not a value, and the value returned is a pointer to a newly allocated zero value of that type.
翻译如下:
内置函数 new 分配空间。传递给new 函数的是一个类型,不是一个值。返回值是 指向这个新分配的零值的指针。

make 函数
官方描述为:

The make built-in function allocates and initializes an object(分配空间 + 初始化) of type slice, map or chan(only). Like new , the first arguement is a type, not a value. Unlike new, make’s return type is the same as the type of its argument, not a pointer to it. The specification of the result depends on the type.
翻译为:
内建函数 make 分配并且初始化 一个 slice, 或者 map 或者 chan 对象。 并且只能是这三种对象。 和 new 一样,第一个参数是 类型,不是一个值。 但是make 的返回值就是这个类型(即使一个引用类型),而不是指针。 具体的返回值,依赖具体传入的类型。

Slice : 第二个参数 size 指定了它的长度,此时它的容量和长度相同。
你可以传入第三个参数 来指定不同的容量值,但是必须不能比长度值小。
比如: make([]int, 0, 10)
Map: 根据size 大小来初始化分配内存,不过分配后的 map 长度为0。 如果 size 被忽略了,那么会在初始化分配内存的时候 分配一个小尺寸的内存。
Channel: 管道缓冲区依据缓冲区容量被初始化。如果容量为 0 或者被 忽略,管道是没有缓冲区的。

总结
new 的作用是 初始化 一个指向类型的指针 (*T), make 的作用是为 slice, map 或者 channel 初始化,并且返回引用 T

make(T, args)函数的目的与new(T)不同。它仅仅用于创建 Slice, Map 和 Channel,并且返回类型是 T(不是T*)的一个初始化的(不是零值)的实例。 这中差别的出现是由于这三种类型实质上是对在使用前必须进行初始化的数据结构的引用。 例如, Slice是一个 具有三项内容的描述符,包括指向数据(在一个数组内部)的指针,长度以及容量。在这三项内容被初始化之前,Slice的值为nil。对于Slice,Map和Channel, make()函数初始化了其内部的数据结构,并且准备了将要使用的值。

package main

import(
    "fmt"
)

func test(){
    a := new([]int)
    b := make([]int,5)
    (*a)[0] = 100
    b[0] = 100
    fmt.Println(a,b)
}
func main(){
    test()
}

输出结果:
panic: runtime error: index out of range

*a指向的是[]int,需要给*a进行make初始化,才可以赋值
*a = make([]int,5)

相关文章

  • Python:内置函数

    python的内置函数,匿名函数 内置函数 内置函数就是python给你提供的,拿来直接用的函数,比如print,...

  • 二级Python----Python的内置函数及标准库(DAY

    Python的内置函数 嵌入到主调函数中的函数称为内置函数,又称内嵌函数。 python的内置函数(68个) Py...

  • Hive 自定义函数

    系统内置函数 查看系统内置函数hive> show functions;显示内置函数用法hive> desc fu...

  • Python精简入门学习(十一)

    Python精简入门学习之内置函数(上)-内置函数 -常用函数

  • 刺猬教你量化投资(三) :函数的概念

    内置函数与自定义函数 内置函数也叫自带函数,是Python已经定义好的函数,比如之前提过的sort()。 内置函数...

  • 三. PHP与MySQL关系大揭秘

    PHP内置MySQL函数学习(1) PHP内置MySQL函数学习(2) PHP内置MySQL函数学习(2)

  • 九月四号

    PHP函数之内置函数 内置函数指的是PHP默认支持的函数,PHP内置了很多标准的常用的处理函数,包括字符串处理、数...

  • Python函数

    一、内置函数 内置函数内置函数可以直接调用。需注意参数个数及类型 二、定义函数 def 定义一个函数要使用def语...

  • Django自定义过滤器及标签

    自定义的引入:内置函数>>>>>>>>>>>>>>>自定义函数内置模块>>>>>>>>>>>>>>>自定义模块内置...

  • SQL内置函数使用手册

    SQL中有很多特别棒的内置函数。本文SQL内置函数手册中总结了SQL中常用的内置函数,包含通用聚合函数、安全检测函...

网友评论

      本文标题:内置函数

      本文链接:https://www.haomeiwen.com/subject/txptcftx.html