To be fair, the example in #4 is EXACTLY WHY IT'S BAD TO USE GOTO. It's a horrible abuse of the construct that makes program flow much more difficult to follow and should have been replaced with moving some of the code off into methods.
Good uses of goto are very rare with current programming languages. The only cases where I have found good uses were with languages that did not have exception handling and in each cases, there was some deficiencies in the specifications and the code containing the goto has disappeared with the corrected specifications. Maybe this was luck.