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

第二个 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下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号