GO语言-defer关键字

前言

在GO语言中,使用defer关键字延迟一个函数或者方法的执行。defer语句会在所有函数最后去执行。

列如,open打开一个文件,可能最后会忘记close。可以在一开始使用defer close,延迟执行close。

多个defer的执行顺序

当函数中出现多个defer语句,则在函数的最后逆序执行defer语句。(遵循栈的操作,先进后出)

func main() {
	defer fmt.Println("defer测试完毕")
	defer fmt.Println("world")
	defer fmt.Print("hello ")
	fmt.Println("测试defer")
}

defer语句的参数传递

如果defer语句遇到了参数传递。实际上,defer语句调用时参数就已经传递了,只是相关函数和语句会被放到函数的最后执行。后续语句对于参数的修改和先前的defer语句就没有关系了。

func main() {
	num := 10
	fmt.Println("定义num:", num)
	defer fmt.Println("defer参数传递 num:", num)

	num *= 2
	fmt.Println("计算后的num:", num)
}

 

你可能感兴趣的:(GO语言-defer关键字)