basic goto和gosub语句有什么区别

What are the difference between a BASIC GOTO and GOSUB statement

在基本编程语言中,goto和gosub语句有什么区别?


GOTO只是跳到另一行,GOSUB跟踪它从哪里来(大概是在堆栈上),所以当解释器遇到RETURN时,它会回到调用GOSUB的最后一个位置。


提供的其他答案对如何使用goto和gosub给出了很好的解释,但是在处理它们的方式上有一个重要的区别。当执行goto时,它从堆栈的顶部开始,并在所有代码行中翻转,直到找到它应该转到的行。然后,如果使用另一个goto语句返回,它将再次转到堆栈的顶部,并翻转所有内容,直到到达下一个位置。

GoSub做的和Goto差不多,但它记得它在哪里。当您使用RETURN语句时,它只会跳回来,而不会先跳到堆栈的顶部,然后再翻遍所有内容,所以速度要快得多。如果您希望代码运行得更快,那么应该将最被调用的子例程放在堆栈的顶部,并使用gosub/return而不是goto。


当您调用goto时,程序将跳转到相关行并继续执行。

如果您使用gosub,它也会做同样的事情,但是在某些时候,您可以编写一个返回语句,代码将返回到gosub之后的行。

所以goto是去x的,gosub是去x的,但是记住你现在在哪里,所以你可以稍后返回。