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