美文网首页
九.Go函数func

九.Go函数func

作者: kaxi4it | 来源:发表于2017-06-20 15:36 被阅读0次

函数

  • Go函数不支持 嵌套、重载、默认参数
  • 支持特性:无需声明原型、不定长度参数、多返回值、命名返回值参数、匿名函数、闭包
  • 函数也可以作为一种类型使用
func main() {
    a := 1
    A(&a)
    //2
    fmt.Println(a)
}

func A(b *int) {//这里接收的参数是指针,所以修改变量会影响到原对象
    *b = 2
    //2
    fmt.Println(*b)
}
func main() {
    a := 1
    A(a)
    //1
    fmt.Println(a)
}

func A(b int) {//这里接收的是copy后的值,所以修改变量并不影响原对象
    b = 2
    //2
    fmt.Println(b)
}
func main() {
    a := func() {
        fmt.Println("匿名函数")
    }
    a()
}
func main() {
    f := closure(10)
    //15
    fmt.Println(f(5))
    //17
    fmt.Println(f(7))
}

func closure(x int) func(int) int {//闭包
    return func(y int) int {
        return x + y
    }
}

defer

  • 函数体执行结束后,按照调用顺序的反向,逐个执行
  • 即时函数发生严重错误也会执行
  • 支持匿名函数的调用
  • 常用于自愿清理、文件关闭、解锁以及记录时间等操作
  • 通过与匿名函数配合可在return之后修改函数计算结果
  • 如果函数体内某个变量作为defer时匿名函数的参数,则在定义defer时即已经获得了拷贝,否则则是引用某个变量的地址
  • go没有异常机制,但有panic/recover模式处理错误
  • panic可以在任何地方引发,但recover只有在defer调用的函数中有效
func main() {
    fmt.Println("111")
    defer fmt.Println("222")
    defer fmt.Println("333")
}
输出:
111
333
222
func main() {
    defer func() { //必须要先声明defer,否则不能捕获到panic异常
        fmt.Println("c")
        if err := recover(); err != nil {
            fmt.Println(err) //这里的err其实就是panic传入的内容
        }
        fmt.Println("d")
    }()
    f()
}
func f() {
    fmt.Println("a")
    panic(111111111)
    fmt.Println("b")
}
输出:
a
c
111111111
d

直通车

一.Go开发工具及命令
二.Go编程基础知识
三.Go的类型与变量
四.Go常量与运算符
五.Go控制语句
六.Go数组
七.Go切片slice
八.Go哈希字典map
九.Go函数func
十.Go结构struct

相关文章

  • 九.Go函数func

    函数 Go函数不支持 嵌套、重载、默认参数 支持特性:无需声明原型、不定长度参数、多返回值、命名返回值参数、匿名函...

  • go 零散笔记(未整理)

    go 学习零散笔记 Go语言程序员推荐使用 驼峰式 命名 函数(func) 一个函数的声明由func关键字、函数名...

  • golang基础 -- 引用外部函数

    如下所示,main.go文件中函数如果要调用与main.go同级目录下的func文件夹中func1.go中的Tes...

  • 09-Go语言函数

    函数 Go语言函数格式func 函数名称(形参列表)(返回值列表){函数语句} Go语言函数的类型没有返回值没有形...

  • Go函数

    1 函数定义 在go语言中函数定义格式如下: 函数由func关键字进行声明。 functionName:代表函数...

  • golang函数

    函数是构建 Go 程序的基础部件 函数的定义 func function_name( [parameter lis...

  • Go学习笔记(三)

    Go函数 Go语言中的函数可以返回多个结果。 函数类型的字面量由关键字func、由圆括号包裹参数声明列表、空格以及...

  • go web 编程笔记

    函数 go函数接受变参func x(arg ...init)int {} defer defer 会按照后进先出的...

  • Go入门16:函数 func

    一、函数定义 函数是结构化编程中最小的模块单元,日常开发过程中,将复杂的算法过程分解为若干个小任务(代码块),使程...

  • Golang基础(三) | 函数

    函数 函数是Go里面的核心设计,它通过关键字func来声明,它的格式如下: 上面的代码我们看出 关键字func用来...

网友评论

      本文标题:九.Go函数func

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