go语言defer,panic,recover 与错误处理

发布时间 2024-01-04 22:13:42作者: 远洪

三个关键字

defer:在函数中,经常要打开资源(如:文件打开,数据库连接等),为了在函数执行后,及时释放资源,go的设计者提供defer(延时机制)

panic:内置函数,接收一个interface{}类型的值(也就是任何值)作为参数,可接收error类型的变量,输出错误信息,并退出程序。

errors.New("错误说明"):返回一个error类型的值,表示一个错误

recover

defer的单独使用

package main

import (
    "fmt"
)

func deferTest() int{
    defer fmt.Println("aaaaaaaaaaaaaaaaa")  // 先不执行,知道函数执行完成后执行该语句;如果前面有一语句为打开数据库,那么我们可以立刻在该语句后使用defer关闭数据库,避免后续忘记关闭
    fmt.Println("bbbbbbbbbbbbbbbbb")
    return 2
}

func main(){
    fmt.Println("deferTest:",deferTest())
}

defer 关键字修饰的语句会被压入一个栈,且不会执行该语句;当函数执行完成后,按照先进后出的方式,执行defer压入栈中的语句。

因此执行结果如下:

bbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaa
deferTest: 2