go --defer
①: 让该函数做延后执行, 一般在宿主函数返回时执行, 做收尾工作
-- 创建一个defer
package main import "fmt" func f1() { fmt.Println("func f1") } func main() { defer f1() //让f1函数延后执行, 现在是先输出了 // main func f1 fmt.Println("main") }
-- defer是倒序执行 先进后出
package main import "fmt" func main() { fmt.Println("开始执行") defer f1() //倒序执行, 先进后出 执行后: // 开始执行 f3执行 2执行 f1执行 defer f2() defer f3() return } func f1() { fmt.Println("f1执行") } func f2() { fmt.Println("f2执行") } func f3() { fmt.Println("f3执行") }
--
package main import "fmt" func takeA() { fmt.Println("拿钥匙") } func takeB() { fmt.Println("拿衣服") } func closeTheDoor() { fmt.Println("随手关门") } func main() { defer closeTheDoor() //保证在本函数退出时执行. 一般拿来跟函数"say goodbye" fmt.Println("进门") takeA() takeB() }

浙公网安备 33010602011771号