go语言基础之defer和匿名函数结合使用

1、匿名函数结合使用

示例1:

package main //必须

import "fmt"

func main() {
	a := 10
	b := 20

	defer func() {
		fmt.Printf("a = %d, b = %d
", a, b)
	}() //()代表调用此匿名函数
        
//先执行外部的,再执行内部的 a = 111 b = 222 fmt.Printf("外部:a = %d, b = %d ", 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
", a, b)
	}(a, b) //a = 10,b =20 ()代表调用此匿名函数, 把参数传递过去,已经先传递参数,只是没有调用

	a = 111
	b = 222
	fmt.Printf("外部:a = %d, b = %d
", a, b)
}

执行结果:

外部:a = 111, b = 222
a = 10, b = 20

  

原文地址:https://www.cnblogs.com/nulige/p/10233200.html