defer 延迟
延迟执行,函数,方法如果有多个延迟,按照后进先出的规则:
先延迟的后执行,后延迟的先执行
package main import "fmt" func main(){// 程序的入口 /* defer,延迟,等到其他的程序执行结束才执行 defer函数用于最后执行。 defer函数有多个,按照后进先出的规则: -->栈的结构: 先延迟的后执行 */ printString("hello") defer printString("王二狗") printString("么么哒") defer printString("world") } func printString(s string) { fmt.Println(s) }
如果defer函数有参数,延迟的时候已经传递了。
package main import ( "fmt" "os" ) func main() { /* defer函数中涉及到参数: 函数的参数在defer调用时就已经传递,只不过被延迟执行而已。 */ a := 1 defer test1(a) a = 100 fmt.Println(a) //test1(a) //fmt.Println(a) file,err:=os.Open("/test.txt") } func test1(num int) { fmt.Println("函数中:num的值:", num) }