美文网首页
《日子》golang-函数function

《日子》golang-函数function

作者: 战神汤姆 | 来源:发表于2016-11-05 15:41 被阅读0次
    函数function

    -Go函数不支持嵌套、重载和默认参数
    -但支持以下特性
    -无需声明原型、不定长度变参、多返回值、命名返回参数匿名函数、闭包

    -定义函数使用关键字func,且左大括号不能另行一行
    -函数也可以作为一种类型使用

    闭包
    <code>
    package main
    import (
    "fmt"
    )
    func main() {
    f := closure(10)
    fmt.Println(f(1))
    fmt.Println(f(2))
    }
    func closure(x int) func(int) int {
    return func(y int) int {
    return x + y
    }
    }
    </code>

    defer

    -的执行方式类似其它语言中的析构函数,在函数体执行结束后按照调用顺序的相反顺序逐个执行
    -即使函数发生严重错误也会执行
    -支持匿名函数的调用
    -常用于资源清理、文件关闭、解锁以及记录时间等操作
    -通过与匿名函数配合可在return之后修改函数计算结果
    -如果函数体内某个变量作为defer时匿名函数的参数,则在定义defer时即已经获得了拷贝,否则则是引用某个 变量的地址

    -Go没有异常机制,但有panic/recover 模式来处理错误
    -Panic可以在任何地方引发,但revocer只有在defer调用的函数中有效

    <code>
    package main
    import (
    "fmt"
    )
    func main() {
    A()
    B()
    C()
    }
    func A() {
    fmt.Println("Func A")
    }
    func B() {
    defer func() {
    if err := recover(); err != nil {
    fmt.Println("Recover in B")
    }
    }()
    panic("Panic in B")
    }
    func C() {
    fmt.Println("Func C")
    }
    </code>

    相关文章

      网友评论

          本文标题:《日子》golang-函数function

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