func main() { for i := 0; i < 10; i++ { defer func(n int) { fmt.Printf("%d", n) }(func() int { n := fibonacci(i) fmt.Printf("%d", n) return n }()) } }
无所谓,参数部分是立即执行的。立即执行就会继承作用域内的参数,是否传i都行。
第二个func是 defer 携带的表达式语句的参数,defer运行时对第二个func先求值