Lambda 按预期工作:
func main() {
inc := func(x int) int { return x+1; }
}
但是,不允许在声明中使用以下声明:
func main() {
func inc(x int) int { return x+1; }
}
出于什么原因不允许嵌套函数?
我认为这个明显的功能不被允许有3个原因
- 它会使编译器稍微复杂化。目前编译器知道所有函数都位于顶层。
- 这会导致一类新的程序员错误——你可能会重构某些东西并意外地嵌套一些函数。
- 对函数和闭包使用不同的语法是一件好事。创建一个闭包可能比创建一个函数更昂贵,所以你应该知道你正在这样做。
这些只是我的意见 - 我还没有看到语言设计者的官方声明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)