九.Go函数func

2017-06-20  本文已影响0人  kaxi4it

函数

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

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

上一篇 下一篇

猜你喜欢

热点阅读