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) }