メリット

  • 深いネストから抜けるときに使うとスッキリする。
  • エラー処理に使うとスッキリする。(例外機構がなければ効果は絶大)
  • 無限ループを明示的に表現できる
  • ネストしない構文をifgotoで書く事が可能。
  • loopなどのループで、スタート箇所のトップレベルへのショートカットとしてgotoを利用可能。
  • 再帰関数処理をifとgotoのループに展開可能。再帰的なラムダ式や無名関数的な用途で利用でき、コールスタックを消費しない方法で再帰関数を表現可能。
  • チューリング完全となるので計算機上表現できるあらゆるコードを書ける。(Java等はgotoが無く、テンプレートやGenerics等がないとチューリング完全ではないらしいので、本質的に表現できない形式が存在する事になる。Javaゲームがつまらない原因の可能性がある)


デメリット

  • 極端にGotoを嫌う人に叩かれる
  • 一般に読みにくいコードになる
  • 後藤さんが好き
  • 一般的にgotoを使いすぎるとコンパイラの最適化効率が落ちる。