Using GOTO for control flow is not recommended. Moreover, it can lead to unsuspected runtime failures. Look at this code for instance:

Method m()
{
    goto out;
out(arg)
    write "Writing", arg," and out", !
}

out is really a subroutine embedded in the method, and it expects an argument. Here however, there isn't any, and the failure will not occur until runtime.