defer函数的参数

发布时间:2019-04-05 16:10:49
Go 

被推迟函数的实参(如果该函数为方法则还包括接收者)在推迟执行时就会被求值, 而不是在调用执行时才求值。这样不仅无需担心变量值在函数执行时被改变, 同时还意味着单个被推迟的调用可推迟多个函数的执行。下面是个简单的例子。

package main

import "fmt"

func main() {
	for i := 0; i < 5; i++ {
		defer func(a int) {
			fmt.Println(a)
		}(i)
	}
}

输出结果

4
3
2
1
0
package main

import "fmt"

func main() {
	for i := 0; i < 5; i++ {
		defer func() {
			fmt.Println(i)
		}()
	}
}

输出结果

5
5
5
5
5
原文地址:http://zhyoulun.com/post/defer-function-params
转载请注明出处