// 匿名函数的延迟执行
func AnonymityFunc() {
fmt.Println("程序开始")
defer func() {
fmt.Println("程序延迟调用")
}()
fmt.Println("程序结束")
/*
程序开始
程序结束
程序延迟调用
*/
}
// 返回值未设置变量名,那么返回值不可以修改
func Test() int {
var i int // 0
defer func() {
i++
fmt.Println(i)
fmt.Println("defer2:", i) //2
}()
defer func() {
i++
fmt.Println(i)
fmt.Println("defer1:", i) //1
}()
return i
/*
defer1: 1
defer2: 2
0
*/
}
// 返回值设置变量名,那么返回值将会获得修改
func Test1() (i int) {
defer func() {
i++
fmt.Println(i)
fmt.Println("defer2:", i) //2
}()
defer func() {
i++
fmt.Println(i)
fmt.Println("defer1:", i) //2
}()
return i
/*
1
defer1: 1
2
defer2: 2
2
*/
}
go语言的defer延迟执行
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- defer的执行顺序 在go语言当中,defer通常是在函数当中使用。当函数执行到最后一行代码(包括return)...