Lambdas 按预期工作:
func main() {
inc := func(x int) int { return x+1; }
}
但是,声明中的以下声明是不允许的:
func main() {
func inc(x int) int { return x+1; }
}
出于什么原因不允许嵌套函数?
原文由 corazza 发布,翻译遵循 CC BY-SA 4.0 许可协议
Lambdas 按预期工作:
func main() {
inc := func(x int) int { return x+1; }
}
但是,声明中的以下声明是不允许的:
func main() {
func inc(x int) int { return x+1; }
}
出于什么原因不允许嵌套函数?
原文由 corazza 发布,翻译遵循 CC BY-SA 4.0 许可协议
每种语言都包含新颖的功能并省略了某人最喜欢的功能。 Go 的设计着眼于编程的舒适性、编译速度、概念的正交性以及支持并发和垃圾收集等功能的需要。您最喜欢的功能可能会丢失,因为它不适合,因为它会影响编译速度或设计的清晰度,或者因为它会使基本系统模型变得太难。
如果 Go 缺少功能 X 让您感到困扰,请原谅我们并调查 Go 确实具有的功能。您可能会发现它们以有趣的方式弥补了 X 的缺失。
什么可以证明添加嵌套函数的复杂性和费用是合理的?如果没有嵌套函数,你想做什么是做不到的?等等。
原文由 peterSO 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答1.4k 阅读
2 回答1.2k 阅读
2 回答1.2k 阅读
2 回答1.2k 阅读
3 回答796 阅读
2 回答964 阅读
1 回答849 阅读
我认为有 3 个原因不允许这个明显的功能
不过,这些只是我的意见——我还没有看到语言设计者的官方声明。