回答

收藏

在 Go 中不允许嵌套函数声明可以缓解哪些问题?

技术问答 技术问答 359 人阅读 | 0 人回复 | 2023-09-12

Lambda 按预期工作:1 u( @5 {$ L7 ]7 J8 U  [, o' w
[code]func main()      inc := func(x int) int { return x code]但声明中不允许使用以下声明:
9 ~4 ?  [9 e' k[code]func main()      func inc(x int) int { return x code]嵌套函数不允许的原因是什么?5 I' t1 F; N6 O) l$ G9 j; X
                                                               
/ ~9 j' D9 W+ M" q% q' h! g' Y    解决方案:                                                                ( g# J' s# z- R  `$ G! O0 F
                                                                我认为不允许使用这种明显功能的原因是 3
6 l% |# A3 s  @0 w1 Z[ol]它使编译器稍微复杂一些。编译器知道所有的函数都在顶层。' e3 u' t$ I& s
它会导致一种新的程序员错误——你可能会重建一些东西,并意外地嵌套一些函数。
# v6 ?& g7 D5 F5 V7 D使用不同的语法作为函数和闭包是一件好事。制作闭包可能比制作函数更贵,所以你应该知道你在样做。[/ol]这些只是我的意见 - 我还没有看到语言设计师的官方声明。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则