go语言基础之defer和匿名函数结合使用
1、匿名函数结合使用
示例1:
package main //必须 import "fmt" func main() { a := 10 b := 20 defer func() { fmt.Printf("a = %d, b = %d\n", a, b) }() //()代表调用此匿名函数
//先执行外部的,再执行内部的 a = 111 b = 222 fmt.Printf("外部:a = %d, b = %d\n", a, b) }
执行结果:
外部:a = 111, b = 222 a = 111, b = 222
示例2: 代表调用此匿名函数, 把参数传递过去,已经先传递参数(原来已经把a = 10 ,b = 20传递过去了),只是没有调用
package main //必须 import "fmt" func main() { a := 10 b := 20 defer func(a, b int) { fmt.Printf("a = %d, b = %d\n", a, b) }(a, b) //a = 10,b =20 ()代表调用此匿名函数, 把参数传递过去,已经先传递参数,只是没有调用 a = 111 b = 222 fmt.Printf("外部:a = %d, b = %d\n", a, b) }
执行结果:
外部:a = 111, b = 222 a = 10, b = 20