企业网站搜索引擎推广方法,襄阳营销型网站,建设个人购物网站,crm管理系统有哪些文章目录 基本用法主要特性常见用途 defer是Go语言中一个非常有用的关键字#xff0c;它用于延迟函数的执行#xff0c;直到包含它的函数返回之前。 基本用法
在函数被退出的时候执行defer后面的内容。
func main() {defer fmt.Println(world)fmt.Println(它用于延迟函数的执行直到包含它的函数返回之前。 基本用法
在函数被退出的时候执行defer后面的内容。
func main() {defer fmt.Println(world)fmt.Println(hello)
}
// 输出:
// hello
// world主要特性
1、延迟执行defer语句会将函数调用推入一个栈中当外层函数返回时这些调用会按照后进先出(LIFO)的顺序执行。
2、参数立即求值defer语句中的参数会在声明时立即求值而不是在函数执行时。
func main() {i : 1defer fmt.Println(Deferred print:, i)ifmt.Println(Normal print:, i)
}
// 输出:
// Normal print: 2
// Deferred print: 13、栈式执行多个defer语句会按照后进先出的顺序执行。
func main() {defer fmt.Println(first)defer fmt.Println(second)defer fmt.Println(third)
}
// 输出:
// third
// second
// first常见用途
1、资源清理如关闭文件、解锁互斥锁等。
func readFile(filename string) (string, error) {f, err : os.Open(filename)if err ! nil {return , err}defer f.Close() // 确保文件会被关闭// 读取文件内容...
}2、错误处理可以与命名返回值结合使用。
func doSomething() (err error) {defer func() {if err ! nil {// 错误处理逻辑log.Printf(doSomething failed: %v, err)}}()// 函数逻辑...
}3、性能测量
func slowOperation() {defer func(start time.Time) {log.Printf(slowOperation took %v, time.Since(start))}(time.Now())// 耗时操作...
}