我很惊讶地发现Go有一个'goto'语句。我一直被教导'goto‘语句是过去的东西,因为它遮蔽了程序的实际流程,函数或方法总是更好的控制流的方法。
我一定漏掉了什么。谷歌为什么要收录它呢?
发布于 2012-06-17 01:08:10
goto是一个好主意,当没有内置的控制功能做你想要的,当你可以用Goto表达你想要的东西时。(在某些语言中,当你没有goto时,这是一种遗憾。你最终滥用了一些控制功能,使用了布尔标志,或者使用了比goto更糟糕的其他解决方案。)
如果其他一些控制功能(以相当明显的方式使用)可以做你想做的事情,你应该优先使用它,而不是goto。如果不是,大胆一点,使用goto!
最后,值得注意的是,Go的goto有一些限制,旨在避免一些晦涩的bug。查看the spec.中的这些限制
发布于 2016-02-17 04:26:42
自60年代和70年代的Spaghetti code时代以来,Goto声明已经受到了很多质疑。那时候,软件开发方法论非常差,甚至没有。然而,Goto并不是天生邪恶的,但当然会被懒惰或不熟练的程序员误用和滥用。滥用Gotos的许多问题可以通过开发过程来解决,例如团队代码审查。
goto
是与continue
、break
和return
技术相同的跳转。有人可能会争辩说,这些声明以同样的方式是邪恶的,但它们不是。
Go团队之所以包含Gotos,可能是因为它是一个常见的流程控制原语。此外,他们希望得出结论,Go的范围排除了不可能滥用的傻瓜式安全语言。
https://stackoverflow.com/questions/11064981
复制相似问题