为了账号安全,请及时绑定邮箱和手机立即绑定

第二个 func 里面的()为啥不用把 i 传进去呢

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        
        }())    
    }
}


正在回答

2 回答

无所谓,参数部分是立即执行的。立即执行就会继承作用域内的参数,是否传i都行。

0 回复 有任何疑惑可以回复我~

第二个func是 defer 携带的表达式语句的参数,defer运行时对第二个func先求值

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

第二个 func 里面的()为啥不用把 i 传进去呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信