The instance where I am using goto is to repeat my main code for each level load, as the levels are being scripted, so...it could be (as the general of my engine is working at the moment):
level:
sync on
sync rate 60
cls
gosub load_level
gosub load_scripts
gosub load_entities
gosub load_shaders
do
gosub level_code
gosub actions
if end_level = 1 then delete_all() : [b]goto[/b] level
if end_game = 1 then end
sync
loop
Theoretically I could use functions for the whole lot, but I felt happier with a goto and gosubs, the functions I used are within the gosubs to act as set up commands, either for scripting, collision or general things, for example I'd have the function - load_object() with parameters for file directory, object number, scale, image number, normal map number, greyscale bumpmap number, shader number, collision type.
I shot the sheriff