当前位置 博文首页 > Go语言函数学习教程

    Go语言函数学习教程

    作者:轩脉刃 时间:2021-02-18 15:03

    本文实例讲述了Go语言函数基本用法。分享给大家供大家参考,具体如下:

    这里要说一下是Go函数和一些其他语言不一样的地方

    1 函数格式不同

    复制代码 代码如下:
    func GetMsg(i int) (r string) {
        fmt.Println(i)
        r = "hi"
        return r
    }

    func说明这个是个函数

    GetMsg是函数名

    (i int) 函数接收一个int参数

    (r string) 函数返回一个string类型返回值

    2 函数可以返回多个返回值

    这点和c,php都不一样,和lua是一样的

    复制代码 代码如下:
    func GetMsg(i int) (r string, err string) {
        fmt.Println(i)
        r = "hi"
        err = "no err"
        return r,err
    }

    3 defer的使用

    defer的意思是"在函数退出时调用",特别用于对文件进行读写操作的时候,需要在open之后要调用close操作,将close操作使用defer

    复制代码 代码如下:
    func ReadFile(filePath string)(){
        file.Open(filePath)
        defer file.Close()
        if true {
            file.Read()
        } else {
            return false
        }
    }

    这样写的意思是在file.Open后不立即调用close,当return false的时候调用file.Close().这样就有效避免了C语言中的内存泄露问题。

    4 比较难理解的:panic,recover和defer

    defer的作用前面说得很清楚了。

    Panic和Recover我们就将他们看成是其他语言中的throw和catch

    下面这个例子:

    复制代码 代码如下:
    package main
    import "fmt"
    func main() {
        f()
        fmt.Println("Returned normally from f.")
    }
    func f() {
        defer func() {
            if r := recover(); r != nil {
                fmt.Println("Recovered in f", r)
            }
        }()
        fmt.Println("Calling g.")
        g(0)
        fmt.Println("Returned normally from g.")
    }
    func g(i int) {
        if i > 3 {
            fmt.Println("Panicking!")
            panic(fmt.Sprintf("%v", i))
        }
        defer fmt.Println("Defer in g", i)
        fmt.Println("Printing in g", i)
        g(i + 1)
    }

    返回了:

    复制代码 代码如下:
    Calling g.
    Printing in g 0
    Printing in g 1
    Printing in g 2
    Printing in g 3
    Panicking!
    Defer in g 3
    Defer in g 2
    Defer in g 1
    Defer in g 0
    Recovered in f 4
    Returned normally from f.

    Panic抛出了信息,并且跳出函数。Recover接受到了信息,并且继续处理。

    这个例子理解了基本就掌握了Recover和Panic

    希望本文所述对大家Go语言程序设计有所帮助。

    js
    下一篇:没有了